// private WXService wxs { get; set; } /// <summary> /// 微信登录初始化及同步操作 /// </summary> public void DoMainLogic(bool isReload = false) { WXService wxs = new WXService(); try { JObject init_result = wxs.WxInit(); //初始化 mainForm.contact_all.Clear(); if (init_result != null) { InitCurrentUserData(init_result); } JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { LoadMyContact(contact_result); } } catch (Exception) { } if (!isReload) { WxSyncCheck(wxs); } }
private void CreateAllUser() { JObject contactResult = Service.GetContact(); //通讯录 if (contactResult != null) { foreach (JObject contact in contactResult["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); AllFriend.Add(user); if (user.UserName.StartsWith(@"@@")) { AllGroup.Add(user); } } } }
/// <summary> /// 重新加载联系人 /// </summary> public void ReloadContact(Action callback = null) { mainForm.ThreadHandle(() => { WXService wxs = new WXService(); JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { LoadMyContact(contact_result, callback); } }); }
private void frmGroup_Load(object sender, EventArgs e) { WXService wxs = new WXService(); // JObject init_result = wxs.WxInit();//初始化 JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { this.listView1.BeginUpdate(); //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); if (contact["UserName"].ToString().IndexOf("@@") >= 0) { ListViewItem lvi = new ListViewItem(); lvi.Text = contact["NickName"].ToString(); lvi.SubItems.Add(contact["UserName"].ToString()); this.listView1.Items.Add(lvi); } } this.listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制。 } }
private void DoMainLogic() { //_lblWait.BringToFront(); //MessageBox.Show("---1"); ((Action)(delegate() { //MessageBox.Show("---2"); LogUtil.log_call(this, "初始化微信信息"); WXService wxs = new WXService(); JObject init_result = wxs.WxInit(); //初始化 List <object> contact_all = new List <object>(); if (init_result != null) { _me = new WXUser(); _me.UserName = init_result["User"]["UserName"].ToString(); try { _me.City = ""; _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(); _me.NickName = init_result["User"]["NickName"].ToString(); _me.Province = ""; _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString(); _me.RemarkName = init_result["User"]["RemarkName"].ToString(); _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(); _me.Sex = init_result["User"]["Sex"].ToString(); _me.Signature = init_result["User"]["Signature"].ToString(); } catch (Exception) { } try { foreach (JObject contact in init_result["ContactList"]) //部分好友名单 { try { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); _contact_latest.Add(user); } catch (Exception) { } } } catch (Exception) { } } JObject contact_result = wxs.GetContact(); //通讯录 try { if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { try { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); contact_all.Add(user); } catch (Exception) { } } } } catch (Exception) { } //IOrderedEnumerable<object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin); //WXUser wx; string start_char; //foreach (object o in list_all) //{ // wx = o as WXUser; // start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1); // if (!_contact_all.Contains(start_char.ToUpper())) // { // _contact_all.Add(start_char.ToUpper()); // } // _contact_all.Add(o); //} //MessageBox.Show("---:" + contact_all.Count.ToString()); try { //this.appBean.weixin_list = weixinList; this.dataGridView_weixin_qun_list.Rows.Clear(); //this.load_qq_qun_shunxu(); int num = 0; foreach (WXUser arrayList4 in contact_all) { try { if (arrayList4.UserName.Contains("@@")) { //MessageBox.Show(arrayList4.UserName.ToString()); DataGridViewRow dataGridViewRow = new DataGridViewRow(); this.dataGridView_weixin_qun_list.Rows.Add(dataGridViewRow); //this.dataGridView_weixin_qun_list.Rows[num].HeaderCell.Value = string.Concat(num + 1, ""); this.dataGridView_weixin_qun_list[0, num].Value = true; this.dataGridView_weixin_qun_list[1, num].Value = arrayList4.NickName; this.dataGridView_weixin_qun_list[1, num].Tag = arrayList4; num++; } else { //DataGridViewRow dataGridViewRow = new DataGridViewRow(); //this.dataGridView_weixin_qun_list.Rows.Add(dataGridViewRow); ////this.dataGridView_weixin_qun_list.Rows[num].HeaderCell.Value = string.Concat(num + 1, ""); //this.dataGridView_weixin_qun_list[0, num].Value = true; //this.dataGridView_weixin_qun_list[1, num].Value = arrayList4.NickName; //this.dataGridView_weixin_qun_list[1, num].Tag = arrayList4; //num++; } } catch (Exception) { } } } catch (Exception exception) { MessageBox.Show(exception.ToString()); //LogUtil.log_call(this, string.Concat("[loadWeixinList]出错:", exception.ToString())); } //this.BeginInvoke((Action)(delegate() //等待结束 //{ // _lblWait.Visible = false; // wChatList1.Items.AddRange(_contact_latest.ToArray()); //近期联系人 // wFriendsList1.Items.AddRange(_contact_all.ToArray()); //通讯录 // wpersonalinfo.FriendUser = _me; //})); string sync_flag = ""; JObject sync_result; while (true) { sync_flag = wxs.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = wxs.WxSync(); //进行同步 if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { string from = m["FromUserName"].ToString(); string to = m["ToUserName"].ToString(); string content = m["Content"].ToString(); string type = m["MsgType"].ToString(); WXMsg msg = new WXMsg(); msg.From = from; msg.Msg = type == "1" ? content : "请在其他设备上查看消息"; //只接受文本消息 msg.Readed = false; msg.Time = DateTime.Now; msg.To = to; msg.Type = int.Parse(type); if (msg.Type == 51) //屏蔽一些系统数据 { continue; } this.BeginInvoke((Action) delegate() { WXUser user; bool exist_latest_contact = false; //foreach (Object u in wChatList1.Items) //{ // user = u as WXUser; // if (user != null) // { // if (user.UserName == msg.From && msg.To == _me.UserName) //接收别人消息 // { // wChatList1.Items.Remove(user); // wChatList1.Items.Insert(0, user); // exist_latest_contact = true; // user.ReceiveMsg(msg); // break; // } // else if (user.UserName == msg.To && msg.From == _me.UserName) //同步自己在其他设备上发送的消息 // { // wChatList1.Items.Remove(user); // wChatList1.Items.Insert(0, user); // exist_latest_contact = true; // user.SendMsg(msg, true); // break; // } // } //} //if (!exist_latest_contact) //{ // foreach (object o in wFriendsList1.Items) // { // WXUser friend = o as WXUser; // if (friend != null && friend.UserName == msg.From && msg.To == _me.UserName) // { // wChatList1.Items.Insert(0, friend); // friend.ReceiveMsg(msg); // break; // } // if (friend != null && friend.UserName == msg.To && msg.From == _me.UserName) // { // wChatList1.Items.Insert(0, friend); // friend.SendMsg(msg, true); // break; // } // } //} //wChatList1.Invalidate(); }); } } } } System.Threading.Thread.Sleep(10); } })).BeginInvoke(null, null); }
/// <summary> /// /// </summary> private void DoMainLogic() { _lblWait.BringToFront(); ((Action)(delegate() { WXService wxs = new WXService(); JObject init_result = wxs.WxInit(); //初始化 List <object> contact_all = new List <object>(); if (init_result != null) { _me = new WXUser(); _me.UserName = init_result["User"]["UserName"].ToString(); _me.City = ""; _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(); _me.NickName = init_result["User"]["NickName"].ToString(); _me.Province = ""; _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString(); _me.RemarkName = init_result["User"]["RemarkName"].ToString(); _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(); _me.Sex = init_result["User"]["Sex"].ToString(); _me.Signature = init_result["User"]["Signature"].ToString(); foreach (JObject contact in init_result["ContactList"]) //部分好友名单 { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); _contact_latest.Add(user); } } JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); contact_all.Add(user); } } IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin); WXUser wx; string start_char; foreach (object o in list_all) { wx = o as WXUser; start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1); if (!_contact_all.Contains(start_char.ToUpper())) { _contact_all.Add(start_char.ToUpper()); } _contact_all.Add(o); } this.BeginInvoke((Action)(delegate() //等待结束 { _lblWait.Visible = false; wChatList1.Items.AddRange(_contact_latest.ToArray()); //近期联系人 wFriendsList1.Items.AddRange(_contact_all.ToArray()); //通讯录 wpersonalinfo.FriendUser = _me; })); string sync_flag = ""; JObject sync_result; while (true) { sync_flag = wxs.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = wxs.WxSync(); //进行同步 if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { string from = m["FromUserName"].ToString(); string to = m["ToUserName"].ToString(); string content = m["Content"].ToString(); string type = m["MsgType"].ToString(); WXMsg msg = new WXMsg(); msg.From = from; msg.Msg = type == "1" ? content : "请在其他设备上查看消息1111"; //只接受文本消息 msg.Readed = false; msg.Time = DateTime.Now; msg.To = to; msg.Type = int.Parse(type); if (msg.Type == 51) //屏蔽一些系统数据 { continue; } //消息处理 if ((msg.To == "@@ab5c137f16c29a0140eacfa2034c287da5f33961fee17e3a2ac54c0eb7a30d14") || (msg.From == "@@ab5c137f16c29a0140eacfa2034c287da5f33961fee17e3a2ac54c0eb7a30d14")) { setLabel(msg.Msg); } this.BeginInvoke((Action) delegate() { WXUser user; bool exist_latest_contact = false; foreach (Object u in wChatList1.Items) { user = u as WXUser; if (user != null) { if (user.UserName == msg.From && msg.To == _me.UserName) //接收别人消息 { //label1.Text = msg.; wChatList1.Items.Remove(user); wChatList1.Items.Insert(0, user); exist_latest_contact = true; user.ReceiveMsg(msg); break; } else if (user.UserName == msg.To && msg.From == _me.UserName) //同步自己在其他设备上发送的消息 { wChatList1.Items.Remove(user); wChatList1.Items.Insert(0, user); exist_latest_contact = true; user.SendMsg(msg, true); break; } } } if (!exist_latest_contact) { foreach (object o in wFriendsList1.Items) { WXUser friend = o as WXUser; if (friend != null && friend.UserName == msg.From && msg.To == _me.UserName) { wChatList1.Items.Insert(0, friend); friend.ReceiveMsg(msg); break; } if (friend != null && friend.UserName == msg.To && msg.From == _me.UserName) { wChatList1.Items.Insert(0, friend); friend.SendMsg(msg, true); break; } } } wChatList1.Invalidate(); }); } } } } System.Threading.Thread.Sleep(10); } })).BeginInvoke(null, null); }
/// <summary> /// 初始化联系人 /// </summary> public void InitContact(List <WXUser> partUsers) { var groupNames = new List <string>(); var contact_result = wx.GetContact(); var _allUser = new Dictionary <string, WXUser>(); if (partUsers != null) { foreach (var u in partUsers) { if (!_allUser.ContainsKey(u.UserName)) { _allUser.Add(u.UserName, u); } } } if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); user = Convert(contact); if (!_allUser.ContainsKey(user.UserName)) { _allUser.Add(user.UserName, user); } } } foreach (var u in _allUser) { if (u.Key.Contains("@@")) { groupNames.Add(u.Key); } } //获取所有群内联系人信息 var bat_contact_result = wx.BatGetContact(groupNames); if (bat_contact_result != null) { var dic = new Dictionary <string, WxGroup>(); foreach (JObject bat_contact in bat_contact_result["ContactList"]) { //群号 var roomID = bat_contact["EncryChatRoomId"].ToString(); //群用户名 var userName = bat_contact["UserName"].ToString(); var nickName = bat_contact["NickName"].ToString(); var userNameArray = new List <GroupWxUser>(); foreach (JObject c in bat_contact["MemberList"]) { var m_username = c["UserName"].ToString(); var m_displayName = c["DisplayName"].ToString(); var m_nickName = c["NickName"].ToString(); var m_attrStatus = c["AttrStatus"].ToString(); if (string.IsNullOrEmpty(m_displayName)) { m_displayName = m_nickName; } userNameArray.Add(new GroupWxUser() { UserName = m_username, NickName = m_nickName, DisplayName = m_displayName, AttrStatus = m_attrStatus }); } WxGroup g = new WxGroup() { UserName = userName, MemberUserNames = userNameArray, NickName = nickName, RoomID = roomID }; dic.Add(userName, g); } WxSerializable s_g = new WxSerializable(this._uin, EnumContainer.SerializType.curr_group_user); s_g.Serializable(dic); //序列化 所有群内成员 } WxSerializable s = new WxSerializable(this._uin, EnumContainer.SerializType.contact); s.Serializable(_allUser); //序列化 所有联系人 }
// private WXService wxs { get; set; } /// <summary> /// 微信登录初始化及同步操作 /// </summary> public void DoMainLogic() { WXService wxs = new WXService(); JObject init_result = wxs.WxInit(); //初始化 mainForm.contact_all.Clear(); if (init_result != null) { InitCurrentUserData(init_result); } else { return; } JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { LoadMyContact(contact_result); } new Thread(() => { Thread.Sleep(30000); wxs = new WXService(); }) { IsBackground = true }.Start(); string sync_flag = ""; JObject sync_result; while (true) { if (isCloseWinForm) { break; } sync_flag = wxs.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = wxs.WxSync(); //进行同步 //在此次进行判断自动回复或踢人操作 if (sync_result != null) { try { //判断是否掉线 if (sync_result["BaseResponse"]["Ret"].ToObject <int>() > 0) { isLoginCheck = false; isCloseWinForm = true; mainForm.listenForm.wxMessageData.Clear(); mainForm.listenForm.ListenWeChatData.Clear(); mainForm.listenForm.HileWinEdit(); mainForm.CloseMyContact(); mainForm.AlertTip("微信掉线,请重新授权登录"); break; } if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { SyncMsgHandle(wxs, m); } } } catch (Exception ex) { log.Error(ex); throw; } } } Thread.Sleep(100); } }
/// <summary> /// /// </summary> private void DoMainLogic() { _lblWait.BringToFront(); ((Action)(delegate() { WXService wxs = new WXService(); JObject init_result = wxs.WxInit(); //初始化 contact_all = new List <object>(); contact_group = new List <object>(); contact_friends = new List <object>(); if (init_result != null) { _me = new WXUser(); _me.UserName = init_result["User"]["UserName"].ToString(); _me.City = ""; _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(); _me.NickName = init_result["User"]["NickName"].ToString(); _me.Province = ""; _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString(); _me.RemarkName = init_result["User"]["RemarkName"].ToString(); _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(); _me.Sex = init_result["User"]["Sex"].ToString(); _me.Signature = init_result["User"]["Signature"].ToString(); } JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { if (contact["UserName"].ToString().Contains("@") && !contact["UserName"].ToString().Contains("@@") && contact["VerifyFlag"].ToString() == "0") { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); user.IsOwner = Convert.ToInt32(contact["IsOwner"].ToString()); contact_all.Add(user); } if (contact["UserName"].ToString().Contains("@@")) { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); user.IsOwner = Convert.ToInt32(contact["IsOwner"].ToString()); contact_group.Add(user); } } } IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin); WXUser wx; string start_char; foreach (object o in list_all) { wx = o as WXUser; start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1); if (!_contact_all.Contains(start_char.ToUpper())) { _contact_all.Add(start_char.ToUpper()); } _contact_all.Add(o); } this.BeginInvoke((Action)(delegate() //等待结束 { _lblWait.Visible = false; wFriendsList1.Items.AddRange(_contact_all.ToArray()); //通讯录 })); string sync_flag = ""; JObject sync_result; while (true) { sync_flag = wxs.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = wxs.WxSync(); //进行同步 if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { string from = m["FromUserName"].ToString(); string to = m["ToUserName"].ToString(); string content = m["Content"].ToString(); string type = m["MsgType"].ToString(); if (type == "10000") { if (content.Contains("开启了朋友验证") || content.Contains("消息已发出,但被对方拒收")) { WXUser user = SendResult.Find(item => { return(item.UserName == from); }); if (user != null) { this.BeginInvoke((Action)(delegate() //等待结束 { wFriendsList2.Items.Add(user); })); } } } if (_me.UserName == to && from.Contains("@@")) { switch (type) { case "3": //获取发送者标识id; var msgSendUser = content.Split(':')[0]; wxs.DeleteChatroom(from, msgSendUser); break; default: break; } } } } } } System.Threading.Thread.Sleep(10); } })).BeginInvoke(null, null); }
/// <summary> /// 网页微信登录 /// </summary> /// <param name="scanCallback">用户扫码回调,会传入用户头像base64字符串</param> /// <param name="LoginCallback">用户登录成功回调</param> /// <returns>登录扫一扫二维码Base64字符串</returns> public async Task <string> Login(Action <string> ScanCallback, Action LoginCallback, Action <MsgModel> GetMsgCallback, Action <string> LoginErrorCallback) { if (State == LoginState.Logined) { throw new Exception("已登录之后,不允许重新登录"); } State = LoginState.Unlogin; var result = await loginService.GetQRBase64Async(); var next = Task.Factory.StartNew(async() => { try { string login_result = null; while (true) //循环判断手机扫面二维码结果 { login_result = loginService.LoginCheck(); if (!login_result.ToLower().StartsWith("http")) //已扫描 未登录 { State = LoginState.Scaned; var scanNotice = Task.Factory.StartNew(() => { ScanCallback(login_result); }); } else if (!string.IsNullOrEmpty(login_result)) //已完成登录 { //访问登录跳转URL await loginService.GetSidUidAsync(login_result); wxService = new WXService(baseService, loginService.SKey, loginService.Pass_Ticket); State = LoginState.Logined; var init_result = wxService.WxInit(); //登录初始化 #region 初始化个人信息和最近聊天列表 if (init_result != null) { SelfUser = init_result.User; LastConnectUser = init_result.ContactList; } else { init_result = wxService.WxInit(); //登录初始化 if (init_result != null) { SelfUser = init_result.User; LastConnectUser = init_result.ContactList; } else { LoginErrorCallback("初始化登录用户信息失败,请重新登录"); break; } } #endregion #region 初始化通讯录 var contact_result = wxService.GetContact(); //通讯录 if (contact_result != null) { AllConnectUser = contact_result.MemberList.OrderBy(c => c.ShowPinYin).ToList(); } else { contact_result = wxService.GetContact(); //通讯录 if (contact_result != null) { AllConnectUser = contact_result.MemberList.OrderBy(c => c.ShowPinYin).ToList(); } else { LoginErrorCallback("初始化通讯录失败,请重新登录"); break; } } #endregion var loginNotice = Task.Factory.StartNew(() => { LoginCallback(); }); #region 循环拉取微信消息 string sync_flag = ""; WxSyncResponse sync_result; while (true) { sync_flag = await wxService.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = await wxService.WxSync(); //进行同步 if (sync_result != null) { if (sync_result.AddMsgCount > 0) { foreach (var m in sync_result.AddMsgList) { GetMsgCallback(new MsgModel() { FromUserName = m.FromUserName, ToUserName = m.ToUserName, Content = m.Content, MsgType = m.MsgType, }); } } } } System.Threading.Thread.Sleep(10); } #endregion } } } catch (Exception ex) { LoginErrorCallback(ex.Message); } }); return(result); }
/// <summary> /// /// </summary> private void DoMainLogic() { _lblWait.BringToFront(); ((Action)(delegate() { Dictionary <string, string> ss = new Dictionary <string, string>(); //先判断下键值是否存在要不卡死头像只能显示一个用户的 //if (!ss.ContainsKey("1")) //{ // ss.Add("1", "1"); //} string sid = LoginCore.GetPassTicket(Uin).WxSid; WXService wxs = new WXService(); wxs.Uin = Uin; wxs.Sid = sid; wxs.robotID = robotID; JObject init_result = wxs.WxInit(); //初始化 List <object> contact_all = new List <object>(); if (init_result != null) { _me = new WXUser(); _me.uin = wxs.Uin; _me.UserName = init_result["User"]["UserName"].ToString(); _me.City = ""; _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(); _me.NickName = init_result["User"]["NickName"].ToString(); _me.Province = ""; _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString(); _me.RemarkName = init_result["User"]["RemarkName"].ToString(); _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(); _me.Sex = init_result["User"]["Sex"].ToString(); _me.Signature = init_result["User"]["Signature"].ToString(); foreach (JObject contact in init_result["ContactList"]) //部分好友名单 { WXUser user = new WXUser(); user.uin = wxs.Uin; user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); _contact_latest.Add(user); } } JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); user.uin = wxs.Uin; user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); contact_all.Add(user); //((Action)delegate() //{ // //写入所有好友信息 // var b = WxOperateLogDal.AddchartLog(wxs.Uin, contact["UserName"].ToString(), contact["City"].ToString(), contact["HeadImgUrl"].ToString(), contact["NickName"].ToString(), contact["Province"].ToString(), contact["PYQuanPin"].ToString(), contact["RemarkName"].ToString(), contact["RemarkPYQuanPin"].ToString(), contact["Sex"].ToString(), contact["Signature"].ToString()); //}).BeginInvoke(null, null); wChatList1.Invalidate(); } } IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin); WXUser wx; string start_char; foreach (object o in list_all) { wx = o as WXUser; start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1); if (!_contact_all.Contains(start_char.ToUpper())) { _contact_all.Add(start_char.ToUpper()); } _contact_all.Add(o); } this.BeginInvoke((Action)(delegate() //等待结束 { _lblWait.Visible = false; wChatList1.Items.AddRange(_contact_latest.ToArray()); //近期联系人 wFriendsList1.Items.AddRange(_contact_all.ToArray()); //通讯录 wpersonalinfo.FriendUser = _me; })); string sync_flag = ""; JObject sync_result; while (true) { sync_flag = wxs.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = wxs.WxSync(); //进行同步 if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { string from = m["FromUserName"].ToString(); string to = m["ToUserName"].ToString(); string content = m["Content"].ToString(); string MsgId = m["MsgId"].ToString(); string type = m["MsgType"].ToString();//语音视频标识 WXMsg msg = new WXMsg(); msg.From = from; wxs.Uin = Uin; wxs.Sid = sid; msg.Sid = wxs.Sid; msg.Uin = wxs.Uin; msg.Msg = type == "1" ? content : "收到一个系统数据"; //只接受文本消息 if (msg.Type == 1) //屏蔽一些系统数据 { msg.Msg = content; } msg.Readed = false; msg.Time = DateTime.Now; msg.To = to; msg.Type = int.Parse(type); //if (msg.Type == 51) //屏蔽一些系统数据 //{ // msg.Msg = "收到一个系统数据"; //} if (msg.Type == 10000)//进群退群消息 { string s = sync_result.ToString(); } if (msg.Type == 3)//图片 { msg.Msg = content + "收到一个图片"; string sFilePath = Environment.CurrentDirectory + "\\IMG"; string sFileName = MsgId + ".jpg"; sFileName = sFilePath + "\\" + sFileName; //文件的绝对路径 HttpService.HttpDownloadFile(Constant._getmsgimg_url + MsgId, msg.Uin, sFileName); } if (msg.Type == 34)//语音 { msg.Msg = "收到语音点击查看"; //Button newButton = new Button();//创建一个名为newButton的新按钮 //newButton.Width = 150; //newButton.Text = "NewButton"; //newButton.BackColor = Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); //newButton.Click += new EventHandler(textBox1_Click); string sFilePath = Environment.CurrentDirectory + "\\MP3"; string sFileName = MsgId + ".wav"; sFileName = sFilePath + "\\" + sFileName; //文件的绝对路径 HttpService.HttpDownloadFile(Constant._getmsgmp3_url + MsgId, msg.Uin, sFileName); } if (msg.Type == 43)//小视频 { msg.Msg = "收到小视频" + "点击查看"; string sFilePath = Environment.CurrentDirectory + "\\MP4"; string sFileName = MsgId + ".MP4"; sFileName = sFilePath + "\\" + sFileName; HttpService.HttpDownloadFile(Constant._getmsgvideo_url + MsgId, msg.Uin, sFileName); } if (msg.Type == 62)//视频 { msg.Msg = content + "收到一个视频"; } if (msg.Type == 10002)//消息撤回 { msg.Msg = content + "对方撤回了消息"; } if (msg.Type == 42)//好友名片 { msg.Msg = content + "收到一个好友名片"; } if (msg.Type == 47)//动态表情 { msg.Msg = content + "收到一个动态表情"; } if (msg.Type == 48)//位置消息 { msg.Msg = content + "收到一个位置消息"; } if (msg.Type == 49)//分享链接 { msg.Msg = content + "收到一个分享链接"; } BeginInvoke((Action) delegate() { WXUser user; bool exist_latest_contact = false; foreach (object u in wChatList1.Items) { user = u as WXUser; if (user != null) { if (user.UserName == msg.From && msg.To == _me.UserName) //接收别人消息 { wChatList1.Items.Remove(user); wChatList1.Items.Insert(0, user); exist_latest_contact = true; user.ReceiveMsg(msg); break; } else if (user.UserName == msg.To && msg.From == _me.UserName) //同步自己在其他设备上发送的消息 { wChatList1.Items.Remove(user); wChatList1.Items.Insert(0, user); exist_latest_contact = true; user.SendMsg(msg, true); break; } } } if (!exist_latest_contact) { foreach (object o in wFriendsList1.Items) { WXUser friend = o as WXUser; if (friend != null && friend.UserName == msg.From && msg.To == _me.UserName) { wChatList1.Items.Insert(0, friend); friend.ReceiveMsg(msg); break; } if (friend != null && friend.UserName == msg.To && msg.From == _me.UserName) { wChatList1.Items.Insert(0, friend); friend.SendMsg(msg, true); break; } } } Wx_AlertForm.ShowWay showWay = Wx_AlertForm.ShowWay.UpDown; string aftitle = _me.NickName + "收到来自" + _me.ShowName + "一条消息"; string afContent = msg.Msg; int afShowInTime, afShowTime, afShowOutTime; int afWidth, afHeigth; int.TryParse("100", out afShowInTime); int.TryParse("8000", out afShowTime); int.TryParse("800", out afShowOutTime); int.TryParse("250", out afWidth); int.TryParse("120", out afHeigth); af = new Wx_AlertForm(); af.Show(afContent, aftitle, showWay, afWidth, afHeigth, afShowInTime, afShowTime, afShowOutTime); }); } } } } //System.Threading.Thread.Sleep(800); //#region 开始任务 ////var robotID = table.Rows[0]["RobotId"].ToString(); //WxTaskCore wt = new WxTaskCore(sid, Uin, robotID); //wt.user = _me; ////接收消息事件 ////wt.OnRevice += new WxTaskCore.Revice(wt_OnRevice); ////接收修改联系人消息 //wt.OnModifyContact += new WxTaskCore.ModifyContact(wt_OnModifyContact); ////通知发送信息 //wt.OnNotifySend += new WxTaskCore.NotifySend(wt_OnNotifySend); //////每一个微信号,开启一个线程 ////ThreadStart start = new ThreadStart(wt.ReviceMsg); ////new Thread(start).Start(); ////启动发送线程 //new Thread(new ThreadStart(wt.AutoSendMsg)).Start(); //#endregion } })).BeginInvoke(null, null); }
public void MainLogic() { WXService wxs = new WXService(); JObject init_result = wxs.WxInit(); //初始化 List <object> contact_all = new List <object>(); if (init_result != null) { _me = new WXUser(); _me.UserName = init_result["User"]["UserName"].ToString(); _me.City = ""; _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(); _me.NickName = init_result["User"]["NickName"].ToString(); _me.Province = ""; _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString(); _me.RemarkName = init_result["User"]["RemarkName"].ToString(); _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(); _me.Sex = init_result["User"]["Sex"].ToString(); _me.Signature = init_result["User"]["Signature"].ToString(); foreach (JObject contact in init_result["ContactList"]) //部分好友名单 { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); _contact_latest.Add(user); } } JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); contact_all.Add(user); } } IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin); WXUser wx; string start_char; foreach (object o in list_all) { wx = o as WXUser; start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1); if (!_contact_all.Contains(start_char.ToUpper())) { _contact_all.Add(start_char.ToUpper()); } _contact_all.Add(o); } JObject sync_flag; JObject sync_result; while (true) { sync_flag = wxs.WxSyncCheck(); //同步检查 if (sync_flag == null) { continue; } else if (sync_flag["retcode"].ToString() != "0") { return; } //这里应该判断 sync_flag中selector的值 else //有消息 { sync_result = wxs.WxSync(); //进行同步 if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { Console.WriteLine(System.DateTime.Now.ToString() + sync_result["AddMsgCount"].ToString() + " Msg(s) Received"); foreach (JObject m in sync_result["AddMsgList"]) { LiveClient.PrintData(m.ToString()); LiveClient.PrintData(",\n"); } } } else { return; } } System.Threading.Thread.Sleep(10); } }
/// <summary> /// /// </summary> private void DoMainLogic() { _lblWait.BringToFront(); ((Action)(delegate() { JObject init_result = wxs.WxInit(); //初始化 #region 初始化个人信息和最近聊天列表 List <object> contact_all = new List <object>(); if (init_result != null) { _me = new WXUser(); _me.UserName = init_result["User"]["UserName"].ToString(); _me.City = ""; _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(); _me.NickName = init_result["User"]["NickName"].ToString(); _me.Province = ""; _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString(); _me.RemarkName = init_result["User"]["RemarkName"].ToString(); _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(); _me.Sex = init_result["User"]["Sex"].ToString(); _me.Signature = init_result["User"]["Signature"].ToString(); _me.Alias = init_result["Alias"]["Alias"].ToString(); foreach (JObject contact in init_result["ContactList"]) //部分好友名单 { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); _contact_latest.Add(user); } } #endregion #region 初始化通讯录 JObject contact_result = wxs.GetContact(); //通讯录 if (contact_result != null) { foreach (JObject contact in contact_result["MemberList"]) //完整好友名单 { WXUser user = new WXUser(); user.UserName = contact["UserName"].ToString(); user.City = contact["City"].ToString(); user.HeadImgUrl = contact["HeadImgUrl"].ToString(); user.NickName = contact["NickName"].ToString(); user.Province = contact["Province"].ToString(); user.PYQuanPin = contact["PYQuanPin"].ToString(); user.RemarkName = contact["RemarkName"].ToString(); user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString(); user.Sex = contact["Sex"].ToString(); user.Signature = contact["Signature"].ToString(); user.VerifyFlag = contact["VerifyFlag"].ToString(); user.Alias = contact["Alias"].ToString(); contact_all.Add(user); } } #endregion #region 将个人信息、聊天信息、通讯录信息填充到控件中 IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin); WXUser wx; string start_char; foreach (object o in list_all) { wx = o as WXUser; start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1); if (!_contact_all.Contains(start_char.ToUpper())) { _contact_all.Add(start_char.ToUpper()); } _contact_all.Add(o); } this.BeginInvoke((Action)(delegate() //等待结束 { _lblWait.Visible = false; wChatList1.Items.AddRange(_contact_latest.ToArray()); //近期联系人 wFriendsList1.Items.AddRange(_contact_all.ToArray()); //通讯录 wpersonalinfo.FriendUser = _me; })); #endregion #region 检查通讯录好友 int.TryParse(System.Configuration.ConfigurationManager.AppSettings["GroupWaitTime"], out groupwaittime); var SpecialUsers = new string[] { "newsapp", "fmessage", "filehelper", "weibo", "qqmail", "tmessage", "qmessage", "qqsync", "floatbottle", "lbsapp", "shakeapp", "medianote", "qqfriend", "readerapp", "blogapp", "facebookapp", "masssendapp", "meishiapp", "feedsapp", "voip", "blogappweixin", "weixin", "brandsessionholder", "weixinreminder", "wxid_novlwrv3lqwv11", "gh_22b87fa7cb3c", "officialaccounts", "notification_messages", "wxitil", "userexperience_alarm" }; var persons = contact_all.Select(c => c as WXUser).Where(c => c.VerifyFlag == "0" && !SpecialUsers.Contains(c.UserName) && !c.UserName.Contains("@@") && c.UserName != _me.UserName).ToList(); int groupcount = 2, index = 0; string chatroomname = ""; List <string> deletedlist = new List <string>(), blockedlist = new List <string>(); Dictionary <string, string> addresult = new Dictionary <string, string>(), deleteresult = new Dictionary <string, string>(); JObject temp; while (index < persons.Count) { var groupperson = persons.Where((c, i) => i >= index && i < (index + groupcount)).Select(c => c.UserName); if (chatroomname == "") { temp = wxs.CreateRoom(groupperson.ToList()); chatroomname = temp["ChatRoomName"].ToString(); } else { temp = wxs.AddMember(chatroomname, groupperson.ToList()); } foreach (JObject obj in temp["MemberList"]) { if (obj["MemberStatus"].ToString() == "4") { deletedlist.Add(obj["UserName"].ToString()); } else if (obj["MemberStatus"].ToString() == "3") { blockedlist.Add(obj["UserName"].ToString()); } } System.Threading.Thread.Sleep(groupwaittime); var delres = wxs.DeleteMember(chatroomname, groupperson.ToList()); foreach (var p in groupperson) { addresult[p] = temp["BaseResponse"]["Ret"].ToString(); deleteresult[p] = delres["BaseResponse"]["Ret"].ToString(); } index += groupcount; System.Threading.Thread.Sleep(groupwaittime); } var deletednames = persons.Where(c => deletedlist.Contains(c.UserName)) .Select(c => string.IsNullOrEmpty(c.RemarkName) ? c.NickName : c.RemarkName); var blockednames = persons.Where(c => blockedlist.Contains(c.UserName)) .Select(c => string.IsNullOrEmpty(c.RemarkName) ? c.NickName : c.RemarkName); Helper.XmlHelper xh = new Helper.XmlHelper(); xh.Root.SetAttribute("UserName", _me.UserName); xh.Root.SetAttribute("NickName", _me.NickName); xh.Root.SetAttribute("Alias", _me.Alias); xh.Root.SetAttribute("friendcount", persons.Count.ToString()); xh.Root.SetAttribute("deletedcount", deletednames.Count().ToString()); xh.Root.SetAttribute("blockedcount", blockednames.Count().ToString()); xh.Root.SetAttribute("deletednames", string.Join(",", deletednames)); xh.Root.SetAttribute("blockednames", string.Join(",", blockednames)); xh.Root.SetAttribute("checktimesplit", groupwaittime.ToString()); foreach (var p in persons) { XmlElement ele = xh.Doc.CreateElement("Friend"); ele.SetAttribute("UserName", p.UserName); ele.SetAttribute("NickName", p.NickName); ele.SetAttribute("Alias", p.Alias); ele.SetAttribute("Province", p.Province); ele.SetAttribute("Sex", p.Sex); ele.SetAttribute("HeadImgUrl", p.HeadImgUrl); ele.SetAttribute("Province", p.Province); ele.SetAttribute("City", p.City); ele.SetAttribute("AddStatus", addresult[p.UserName]); ele.SetAttribute("DeleteStatus", deleteresult[p.UserName]); ele.SetAttribute("FriendStatus", deletedlist.Contains(p.UserName) ? "4" : blockednames.Contains(p.UserName) ? "3" : "0"); xh.AddEle(ele); } xh.Save(string.Format("{0}\\{1}{2}.xml", Environment.GetFolderPath(Environment.SpecialFolder.Desktop).TrimEnd('\\'), _me.UserName, DateTime.Now.ToString("yyyyMMddhhmmss"))); //wxs.SendMsg(string.Format("删除名单有:{0} 拉黑名单有:{1}", string.Join(",", deletednames), string.Join(",", blockednames)), _me.UserName, chatroomname, 1); //MessageBox.Show(string.Format("删除名单有:{0} 拉黑名单有:{1}", string.Join(",", deletednames), string.Join(",", blockednames))); #endregion #region 保持和微信持续通讯 System.Threading.Thread t1 = new System.Threading.Thread(new System.Threading.ThreadStart(cycletalk)); t1.Start(); #endregion #region 循环拉取微信消息 //string sync_flag = ""; //JObject sync_result; //while (true) //{ // sync_flag = wxs.WxSyncCheck(); //同步检查 // if (sync_flag == null) // { // continue; // } // //这里应该判断 sync_flag中selector的值 // else //有消息 // { // sync_result = wxs.WxSync(); //进行同步 // if (sync_result != null) // { // if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") // { // foreach (JObject m in sync_result["AddMsgList"]) // { // string from = m["FromUserName"].ToString(); // string to = m["ToUserName"].ToString(); // string content = m["Content"].ToString(); // string type = m["MsgType"].ToString(); // WXMsg msg = new WXMsg(); // msg.From = from; // msg.Msg = type == "1" ? content : "请在其他设备上查看消息"; //只接受文本消息 // msg.Readed = false; // msg.Time = DateTime.Now; // msg.To = to; // msg.Type = int.Parse(type); // if (msg.Type == 51) //屏蔽一些系统数据 // { // continue; // } // this.BeginInvoke((Action)delegate() // { // WXUser user; bool exist_latest_contact = false; // foreach (Object u in wChatList1.Items) // { // user = u as WXUser; // if (user != null) // { // if (user.UserName == msg.From && msg.To == _me.UserName) //接收别人消息 // { // wChatList1.Items.Remove(user); // wChatList1.Items.Insert(0, user); // exist_latest_contact = true; // user.ReceiveMsg(msg); // break; // } // else if (user.UserName == msg.To && msg.From == _me.UserName) //同步自己在其他设备上发送的消息 // { // wChatList1.Items.Remove(user); // wChatList1.Items.Insert(0, user); // exist_latest_contact = true; // user.SendMsg(msg,true); // break; // } // } // } // if (!exist_latest_contact) // { // foreach (object o in wFriendsList1.Items) // { // WXUser friend = o as WXUser; // if (friend != null && friend.UserName == msg.From && msg.To == _me.UserName) // { // wChatList1.Items.Insert(0, friend); // friend.ReceiveMsg(msg); // break; // } // if (friend != null && friend.UserName == msg.To && msg.From == _me.UserName) // { // wChatList1.Items.Insert(0, friend); // friend.SendMsg(msg,true); // break; // } // } // } // wChatList1.Invalidate(); // }); // } // } // } // } // System.Threading.Thread.Sleep(10); //} #endregion })).BeginInvoke(null, null); }