private void UpdateGameRoleList() { if (SoftContext.Role == null) { return; } DmPlugin dm = SoftContext.Role.Window.Dm; var tempList = new ObservableCollection <RoleInfo>(); foreach (var item in this._gameRoleList) { tempList.Add(item); } this._gameRoleList.Clear(); string hwnds = dm.EnumWindowByProcess("DragonNest.exe", "", "DRAGONNEST", 2); List <int> hList = dm.GetHwnds(hwnds); foreach (var h in hList) { if (SoftContext.Role.Window.Hwnd == h) { continue; } RoleInfo roleInfo = new RoleInfo(); roleInfo.ID = this._gameRoleList.Count + 1; roleInfo.PID = dm.GetWindowProcessId(h); roleInfo.Occupation = dm.ReadString(h, "[1221740]+e50", 1, 10); roleInfo.Hwnd = h; var info = tempList.FirstOrDefault(x => x.Hwnd == h); if (info == null) { roleInfo.IsTogether = false; roleInfo.IsMove = false; roleInfo.Delay = 0; } else { roleInfo.IsTogether = info.IsTogether; roleInfo.IsMove = info.IsMove; roleInfo.Delay = info.Delay; } this._gameRoleList.Add(roleInfo); } }