/// <summary> /// 微信同步(获取最新消息) /// </summary> /// <returns></returns> public List <object> WxSync() { try { WXResult wxResult = new WXResult(); JObject sync_result = MessageSync.WxSync(); //同步检查 List <object> msgList = new List <object>(); if (sync_result != null) { if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0") { foreach (JObject m in sync_result["AddMsgList"]) { WXMsg msg = new WXMsg(); msg.From = m["FromUserName"].ToString(); msg.To = m["ToUserName"].ToString(); msg.Msg = m["Content"].ToString(); msg.Type = int.Parse(m["MsgType"].ToString()); msgList.Add(msg); } return(msgList); } } return(null); } catch (Exception ex) { return(null); } }
static void MsgHandle(WXMsg msg) { var time = msg.Time.ToString("HH:mm:ss"); var mt = System.Text.RegularExpressions.Regex.Match(msg.FromNickName, @"^\[(.*)\](.*)$"); var eqNickName = msg.FromNickName; if (mt.Success) { eqNickName = mt.Groups[1].Value; } if (!eqNickName.Equals(preMsg) && !eqNickName.Equals("Chengf")) { Console.WriteLine(); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine(eqNickName + "-" + time); Console.ResetColor(); } var name = eqNickName.Equals("Chengf") ? "我" : eqNickName; if (mt.Success) { name = eqNickName.Equals("Chengf") ? "我" : mt.Groups[2].Value; } Console.WriteLine($"[{name}][{time}]{msg.Msg}"); if (!eqNickName.Equals("Chengf")) { preMsg = eqNickName; } }
/// <summary> /// UI界面显示接收消息 /// </summary> private void ShowReceiveMsg(WXMsg msg) { //if (_meUser == null || _friendUser == null) //{ // return; //} var m = ReplyFactory.Create(msg).MakeContent(msg); try { string str = @"<script type=""text/javascript"">window.location.hash = ""#ok"";</script> <div class=""chat_content_group buddy""> <p style=""text-align:center;color:#A4B4BB;font-size:9px;"">" + msg.Time + @"</p> <img class=""chat_content_avatar"" src="" + _friend_base64 + @"" width=""40px"" height=""40px""> <p class=""chat_nick"">" + _friendUser.ShowName + @"</p> <p class=""chat_content"">" + msg.Msg + @"</p> </div><a id='ok'></a>"; if (_totalHtml == "") { _totalHtml = _baseHtml; } msg.Readed = true; webKitBrowser1.DocumentText = _totalHtml = _totalHtml.Replace("<a id='ok'></a>", "") + str; ((Action) delegate() { var b = WxOperateLogDal.AddWxchatcontent_sedMsg(_meUser.uin, _friendUser.ShowName, _friendUser.ShowName, _meUser.ShowName, msg.Msg, msg.Time.ToString()); }).BeginInvoke(null, null); } catch { return; } }
/// <summary> /// UI界面显示发送消息 /// </summary> private void ShowSendMsg(WXMsg msg) { if (_meUser == null || _friendUser == null) { return; } if (msg == LastSendMsg) { return; } LastSendMsg = msg; string str = @"<script type=""text/javascript""> </script> <div name=""content"" id=""content"" class=""chat_content_group self""> <p class=""chat_nick"">" + ((_meUser.RemarkName == null || _meUser.RemarkName == "") ? _meUser.NickName : _meUser.RemarkName) + @"</p> <p class=""chat_content"">" + msg.Msg + @"</p> </div><a id='ok'></a>"; if (_totalHtml == "") { _totalHtml = MessageHtml._baseHtml; } _totalHtml = _totalHtml.Replace("<a id='ok'></a>", "") + str; webBrowser1.DocumentText = _totalHtml; txtInput.Text = ""; }
/// <summary> /// 点击发送 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> /// private void SendContent_Click(object sender, EventArgs e) { try //if (rSendContent.Text != null && _friendUser != null && _meUser != null) { if (rSendContent.Text.Trim() == "") //Trim()是去除空格 { MessageBox.Show("(*^__^*) 嘻嘻……\n不能发空消息", "提 示"); } else { WXMsg msg = new WXMsg(); msg.Uin = _meUser.uin; msg.Sid = LoginCore.GetPassTicket(_meUser.uin).WxSid; msg.From = _meUser.UserName; msg.Msg = rSendContent.Text; msg.Readed = false; msg.To = _friendUser.UserName; msg.Type = 1; msg.Time = DateTime.Now; _friendUser.SendMsg(msg, false); rSendContent.Clear(); rSendContent.Focus(); } } catch { return; } }
public SendMsg MakeContent(WXMsg msg) { SendMsg m = new SendMsg(); m.type = 1; m.context = "云客服提醒:恭喜发财,红包拿来"; return(m); }
/// <summary> /// when opens a child chat window and a new message is delivered to the user, /// the message is marked as read /// </summary> /// <param name="user"></param> /// <param name="msg"></param> /// <returns></returns> private bool _wxSerivice_UpdateMsgToWxUsering(WXUserViewModel user, WXMsg msg) { if (_chatWindowsDic.ContainsKey(user.UserName)) { msg.Readed = true; } return(true); }
/// <summary> /// 向该用户发送消息 /// </summary> /// <param name="msg"></param> public void SendMsg(WXMsg msg) { _sentMsg.Add(msg); if (MsgSent != null) { MsgSent(msg); } }
/// <summary> /// 接收来自该用户的消息 /// </summary> /// <param name="msg"></param> public void ReceiveMsg(WXMsg msg) { _recvedMsg.Add(msg); if (MsgRecved != null) { MsgRecved(msg); } }
public SendMsg MakeContent(WXMsg msg) { if (this.logic != null) { return(logic.MakeContent(msg)); } else { return(new SendMsg()); } }
private void btnStartCleanFans_Click(object sender, EventArgs e) { wFriendsList2.Items.Clear(); if (!isStart) { WXService wxs = new WXService(); string Msg = rtbContent.Text; isStart = true; rtbMsg.Clear(); btnStartCleanFans.Text = "正在扫描中"; btnStartCleanFans.Enabled = false; wFriendsList2.Items.Add(""); ((Action)(delegate() { SetText(">>>" + DateTime.Now.ToString("HH:mm:ss") + " 开始扫描僵尸粉..." + "\r\n"); foreach (WXUser _friendUser in contact_all) { //WXUser _friendUser = item as WXUser; SetText(">>>" + DateTime.Now.ToString("HH:mm:ss") + " 正在扫描【" + _friendUser.ShowName + "】..."); WXMsg msg = new WXMsg(); msg.From = _me.UserName; msg.Msg = Msg; msg.Readed = false; msg.To = _friendUser.UserName; msg.Type = 1; msg.Time = DateTime.Now; SendResult.Add(_friendUser); _friendUser.SendMsg(msg, false); SetText("ok." + "\r\n"); System.Threading.Thread.Sleep(2000); //wxs.SendImageToUserName(_friendUser.UserName, "http://img01.taobaocdn.com/bao/uploaded/i1/TB1wz_KOXXXXXbBapXXXXXXXXXX_!!0-item_pic.jpg"); } SetText(">>>" + DateTime.Now.ToString("HH:mm:ss") + " 扫描完成." + "\r\n"); isStart = false; this.BeginInvoke((Action)(delegate() //等待结束 { btnStartCleanFans.Text = "开始扫描僵尸粉"; btnStartCleanFans.Enabled = true; })); })).BeginInvoke(null, null); } WXService wsx = new WXService(); string f = "@@c5ac04499d2c110fd0e45763989f7dabfc7f95847edf4ba3bb0a1a2a765e111c"; string t = "@9fb69d7c87045a3a1ea54d1a07f05a3e"; wsx.DeleteChatroom(f, t); }
public SendMsg MakeContent(WXMsg msg) { WxContact contact = new WxContact(msg.Uin); //需要更新群内成员信息 var currMember = contact.GetOnLineGroupMember(msg.From); contact.Add(msg.From, currMember); //更新群内联系人信息 SendMsg m = new SendMsg(); m.context = "云客服提醒:呼呼,貌似有人退群了....."; m.type = 1; return(m); }
private void SendTextMessage(string text) { if (_friendUser != null && _meUser != null) { WXMsg msg = new WXMsg(); msg.From = _meUser.UserName; msg.Msg = text; msg.Readed = false; msg.To = _friendUser.UserName; msg.Type = 1; msg.Time = DateTime.Now; _friendUser.SendMsg(msg, false); } }
/// <summary> /// 点击发送 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { if (textBox1.Text != null && _friendUser != null && _meUser != null) { WXMsg msg = new WXMsg(); msg.From = _meUser.UserName; msg.Msg = textBox1.Text; msg.Readed = false; msg.To = _friendUser.UserName; msg.Type = 1; msg.Time = DateTime.Now; _friendUser.SendMsg(msg, false); } }
public SendMsg MakeContent(WXMsg msg) { SendMsg m = new SendMsg(); m.type = 1; m.context = string.Empty; WxContact contact = new WxContact(msg.Uin); var plus = new CharLogicContext(contact, msg); if (plus != null) { m = plus.Create().MakeLogic(); } return(m); }
public static ReplyContext Create(WXMsg msg) { ReplyContext context = new ReplyContext(null); switch (msg.Type) { case 10000: //进群,退群,红包 context = new ReplyContext(MakeSysReplyLogic(msg.Msg)); break; case 1: //文本内容 context = new ReplyContext(new ChatLogic()); break; } return(context); }
/// <summary> /// UI界面显示发送消息 /// </summary> private void ShowSendMsg(WXMsg msg) { if (_meUser == null || _friendUser == null) { return; } string str = @"<script type=""text/javascript"">window.location.hash = ""#ok"";</script> <div class=""chat_content_group self""> <img class=""chat_content_avatar"" src=""" + _me_base64 + @""" width=""40px"" height=""40px""> <p class=""chat_nick"">" + _meUser.ShowName + @"</p> <p class=""chat_content"">" + msg.Msg + @"</p> </div><a id='ok'></a>"; if (_totalHtml == "") { _totalHtml = _baseHtml; } webKitBrowser1.DocumentText = _totalHtml = _totalHtml.Replace("<a id='ok'></a>", "") + str; }
/// <summary> /// 指定某人发送指定消息 /// </summary> /// <param name="FromUserName">自己ID</param> /// <param name="ToUserName">好友ID</param> /// <param name="Msg">消息内容</param> public bool SpecifiedReply(string ToUserName, string Msg) { try { WXMsg assignMsg = new WXMsg(); WXUser assignUser = new WXUser(); assignMsg.From = MessageSync.userInfo.UserName; assignMsg.Msg = Msg; assignMsg.Readed = false; assignMsg.To = ToUserName; assignMsg.Type = 1; assignMsg.Time = DateTime.Now; assignUser.SendMsg(assignMsg, false); return(true); } catch (Exception) { return(false); } }
/// <summary> /// 获取最近的一条消息 /// </summary> /// <returns></returns> public WXMsg GetLatestMsg() { WXMsg msg = null; if (_sentMsg.Count > 0 && _recvedMsg.Count > 0) { msg = _sentMsg.Last().Time > _recvedMsg.Last().Time ? _sentMsg.Last() : _recvedMsg.Last(); } else if (_sentMsg.Count > 0) { msg = _sentMsg.Last(); } else if (_recvedMsg.Count > 0) { msg = _recvedMsg.Last(); } else { msg = null; } return(msg); }
/// <summary> /// 图片上传 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnFile_Click(object sender, EventArgs e) { //初始化一个OpenFileDialog类 OpenFileDialog fileDialog = new OpenFileDialog(); //判断用户是否正确的选择了文件 if (fileDialog.ShowDialog() == DialogResult.OK) { //获取用户选择文件的后缀名 string extension = Path.GetExtension(fileDialog.FileName); //声明允许的后缀名 string[] str = new string[] { ".jpge", ".jpg", ".png" }; if (!((IList)str).Contains(extension)) { MessageBox.Show("仅能上传jpge,jpg,png格式的图片!"); } else { //获取用户选择的文件,并判断文件大小不能超过20K,fileStream.Length是以字节为单位的 FileStream fileStream = new FileStream(fileDialog.FileName, FileMode.Open); if (fileStream.Length > 20480) { MessageBox.Show("上传的图片不能大于20K"); } else { WXMsg msg = new WXMsg(); msg.From = _meUser.UserName; msg.Readed = false; msg.To = _friendUser.UserName; msg.Type = 3; msg.Time = DateTime.Now; SendMessage send = new SendMessage(); msg.Msg = send.UploadImg(msg.From, msg.To, fileStream); _friendUser.SendMsg(msg, false); } } } }
/// <summary> /// 响应MessageServer的消息 /// </summary> /// <param name="wxMsg"></param> public void ReceiveMessage(WXMsg wxMsg) { LuckType luckType = LuckType.None; if ((wxMsg.Type == 49 && wxMsg.Msg.Contains(@"饿了么拼手气"))) { luckType = LuckType.RobLK; } if (wxMsg.Msg.Contains(@"#红包")) { luckType = LuckType.GetLK; } if (luckType != LuckType.None) { superAdmin = -1; this.type = luckType; this.sendTo = wxMsg.To; this.sendFrom = wxMsg.From; this.content = wxMsg.Msg; this.SendLuckMessage(); } }
/// <summary> /// 收到新消息 /// </summary> /// <param name="msg"></param> void _friendUser_MsgRecved(WXMsg msg) { ShowReceiveMsg(msg); if (msg.Msg.CompareTo("hi") == 0) { if (CheckProcessIsOk()) { string rm = ComputerInfomation.get_StorageInfo().dwMemoryLoad.ToString(); string cpu = ComputerInfomation.getCPUUsage(); SendTextMessage("Hi,服务器实时运行监控预览:"); SendTextMessage(" 1.Multicharts进程正常运行中..."); SendTextMessage(" 2.内存容量占用率:" + rm + "%"); SendTextMessage(" 3.CPU使用率:" + cpu + "%"); //3.完成截图; //SendShotScreenOperater(); } else { string rm = ComputerInfomation.get_StorageInfo().dwMemoryLoad.ToString(); string cpu = ComputerInfomation.getCPUUsage(); SendTextMessage("Hi,服务器运行监控预览:"); SendTextMessage(" 1.Multicharts进程崩溃,立即检查..."); SendTextMessage(" 2.内存容量占用率:" + rm + "%"); SendTextMessage(" 3.CPU使用率:" + cpu + "%"); //3.完成截图; //SendShotScreenOperater(); } } }
/// <summary> /// 接收消息 /// </summary> /// <param name="msg"></param> void wt_OnRevice(WXMsg msg) { try { WxContact c = new WxContact(msg.Uin); string log = "type:" + msg.Type.ToString() + "来源:" + msg.From + "[ " + c.GetNickName(msg.From) + "],发至:" + msg.To + " [" + c.GetNickName(msg.To) + "]" + msg.Msg; WriteLog(log); var m = ReplyFactory.Create(msg).MakeContent(msg); var sendContext = m.context; if (!string.IsNullOrEmpty(sendContext)) { WXService s = new WXService(); s.Sid = msg.Sid; s.Uin = msg.Uin; s.SendMsg(sendContext, msg.To, msg.From, m.type, msg.Uin, msg.Sid); } //string afTitle = "[ " + c.GetNickName(msg.From) + "]回复[" + c.GetNickName(msg.To) + "]" + "一条消息"; //string afContent = msg.Msg; //YUNkefu.AlertForm.ShowWay showWay = YUNkefu.AlertForm.ShowWay.UpDown; //int afShowInTime, afShowTime, afShowOutTime; //int afWidth, afHeigth; //int.TryParse("100", out afShowInTime); //int.TryParse("500", out afShowTime); //int.TryParse("100", out afShowOutTime); //int.TryParse("250", out afWidth); //int.TryParse("120", out afHeigth); //af = new YUNkefu.AlertForm(); //af.Show(afContent, afTitle, showWay, afWidth, afHeigth, afShowInTime, afShowTime, afShowOutTime); WriteLog("【demo】" + log); } catch (Exception ex) { WriteLog("【错误】" + ex.ToString()); Tools.WriteLog(ex.ToString()); } }
/// <summary> /// UI界面显示接收消息 /// </summary> private void ShowReceiveMsg(WXMsg msg) { if (_meUser == null || _friendUser == null) { return; } if (msg == LastReceiveMsg) { return; } LastReceiveMsg = msg; string str = @"<script type=""text/javascript""></script> <div name=""content"" id=""content"" class=""chat_content_group buddy""> <p class=""chat_nick"">" + _friendUser.ShowName + @"</p> <p class=""chat_content"">" + msg.Msg + @"</p> </div><a id='ok'></a>"; if (_totalHtml == "") { _totalHtml = MessageHtml._baseHtml; } msg.Readed = true; webBrowser1.DocumentText = _totalHtml = _totalHtml.Replace("<a id='ok'></a>", "") + str; }
/// <summary> /// 收到新消息 /// </summary> /// <param name="msg"></param> void _friendUser_MsgRecved(WXMsg msg) { ShowReceiveMsg(msg); }
/// <summary> /// 发送消息完成 /// </summary> /// <param name="msg"></param> void _friendUser_MsgSent(WXMsg msg) { ShowSendMsg(msg); }
private void PrintMsgToUI(WXMsg msg, string me) { var time = msg.Time.ToString("HH:mm:ss"); var fromShowName = msg.FromUserInfo.ShowName; var toShowName = msg.ToUserInfo.ShowName; //msg.FromNickName = Regex.Replace(msg.FromNickName, @"\[unkown\]$", string.Empty); //var mt = Regex.Match(msg.FromNickName, @"^\[(.*)\](.*)$"); //var eqNickName = msg.FromNickName; //if (mt.Success) eqNickName = mt.Groups[1].Value; // 存储当前第一次会话为第一个联系人 if (this._currentContract == null && !msg.FromNickName.Equals(me)) { this._currentContract = new WXUser { UserName = msg.From, NickName = fromShowName } } ; if (!msg.FromNickName.Equals(me)) { this.AppendToHotDic(msg.From, fromShowName); } if (fromShowName.Equals(me) && !msg.To.Equals(preMsg)) { // 如果消息来源是“我”,则以消息接收方为头 PrintLine(); PrintLineHead(toShowName + "-" + time); } else if (!msg.From.Equals(preMsg) && !fromShowName.Equals(me)) { PrintLine(); PrintLineHead(fromShowName + "-" + time); } var name = fromShowName.Equals(me) ? "我" : fromShowName; if (msg.FromUserInfo.UserType == UserType.ChatRoom) { // 只有讨论组才取值 name = fromShowName.Equals(me) ? "我" : msg.FromMemberUserName ?? "[unkown]"; } if (msg.Type == 3 || (msg.Type == 47 && msg.PicMsg != null)) { // 图片 PrintLine($"[{name}][{time}]"); this.AddImageToTextView(msg.PicMsg, msg.Msg); PrintLine(); } else { // 文字 PrintLine($"[{name}][{time}]{msg.Msg}"); } if (!fromShowName.Equals(me)) { preMsg = msg.From; } else { preMsg = msg.To; } // 发送mac通知 if (!fromShowName.Equals(me) && !msg.FromUserInfo.IsMuted()) { Tool.SendNotification(fromShowName, msg.Msg, new NSDictionary("userName", msg.From)); } }
/// <summary> /// 重绘 /// </summary> /// <param name="e"></param> protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Rectangle bound; e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; for (int i = 0; i < Items.Count; ++i) { WXUser user = Items[i] as WXUser; if (user != null) { bound = GetItemRectangle(i); if (!ClientRectangle.IntersectsWith(bound)) { continue; } if (_mouse_over == i) { e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(20, 248, 248, 255)), bound); } if (SelectedIndex == i) { e.Graphics.FillRectangle(Brushes.LightGray, bound); } e.Graphics.DrawLine(new Pen(Color.FromArgb(50, Color.Black)), new Point(bound.X, bound.Y + 70), new Point(bound.X + Width, bound.Y + 70)); using (Font f = new Font("微软雅黑", 11)) { if (user.Icon != null) { e.Graphics.DrawImage(user.Icon, new Rectangle(bound.X + 10, bound.Y + 10, 50, 50)); //头像 } e.Graphics.DrawString(user.ShowName, f, Brushes.Black, new PointF(bound.X + 70, bound.Y + 8)); //昵称 } List <WXMsg> list_unread = user.GetUnReadMsg(); WXMsg latest = user.GetLatestMsg(); if (list_unread != null) //有未读消息 { using (Font f2 = new Font("微软雅黑", 10)) { string time_str = list_unread[list_unread.Count - 1].Time.ToShortTimeString(); Size time_size = TextRenderer.MeasureText(time_str, f2); e.Graphics.DrawString(time_str, f2, new SolidBrush(Color.FromArgb(0, 0, 0)), new PointF(bound.X + Width - time_size.Width - 13, bound.Y + 8)); //最后一条未读消息时间 string latest_msg = list_unread[list_unread.Count - 1].Msg.ToString(); //最后一条未读消息 latest_msg = latest_msg.Length <= 10 ? latest_msg : latest_msg.Substring(0, 10) + "..."; latest_msg = "[" + list_unread.Count + "条] " + latest_msg; Size latest_msg_size = TextRenderer.MeasureText(latest_msg, f2); e.Graphics.DrawString(latest_msg, f2, new SolidBrush(Color.FromArgb(0, 0, 0)), new PointF(bound.X + 70, bound.Y + 40)); } using (Font f3 = new Font("微软雅黑", 8)) //未读消息条数 小红圆点 { e.Graphics.FillEllipse(Brushes.Red, new Rectangle(bound.X + 10 + 50 - 9, bound.Y + 10 - 9, 18, 18)); e.Graphics.DrawString((list_unread.Count < 10 ? list_unread.Count.ToString() : "..."), f3, Brushes.White, new PointF(bound.X + 10 + 50 - 5, bound.Y + 10 - 7)); } } else //否则 显示最新的一条消息 { if (latest != null) { using (Font f2 = new Font("微软雅黑", 10)) { string time_str = latest.Time.ToShortTimeString(); Size time_size = TextRenderer.MeasureText(time_str, f2); e.Graphics.DrawString(time_str, f2, new SolidBrush(Color.FromArgb(255, 69, 0)), new PointF(bound.X + Width - time_size.Width - 13, bound.Y + 8)); //最后一条未读消息时间 string latest_msg = latest.Msg.ToString(); //最新一条消息 latest_msg = latest_msg.Length <= 10 ? latest_msg : latest_msg.Substring(0, 10) + "..."; Size latest_msg_size = TextRenderer.MeasureText(latest_msg, f2); e.Graphics.DrawString(latest_msg, f2, new SolidBrush(Color.FromArgb(0, 0, 0)), new PointF(bound.X + 70, bound.Y + 40)); } } } } } }
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); }
public void sendContent(string content_json) { LogUtil.log_call(this, "获取到发送信息,即将开始发送。。。"); try { ArrayList img_list = new ArrayList(); //LogUtil.log_call(this, "content_json:" + content_json); JObject sync_resul = JsonConvert.DeserializeObject(content_json) as JObject; string content = sync_resul["content"].ToString(); if (sync_resul["imgs"]["count"].ToString() != "0") { foreach (JObject key in sync_resul["imgs"]["items"]) { img_list.Add(key["url"].ToString()); } } for (int i = 0; i < this.dataGridView_weixin_qun_list.Rows.Count; i++) { if (this.dataGridView_weixin_qun_list[0, i].Value != null) { bool checked_ = (bool)this.dataGridView_weixin_qun_list[0, i].Value; if (checked_) { WXUser user = (WXUser)this.dataGridView_weixin_qun_list[1, i].Tag; if (user != null) { //LogUtil.log_call(this, "user.UserName:" + user.UserName); WXUser _friendUser = new WXUser(); WXMsg msg = new WXMsg(); msg.From = _me.UserName; msg.Msg = content; msg.Readed = false; msg.To = user.UserName; msg.Type = 1; msg.Time = DateTime.Now; foreach (string img in img_list) { string img_str = img; if (img_str.Contains("file:///")) { img_str = img_str.Replace("file:///", ""); } string MediaId = WXService.upload(this, "", _me.UserName, user.UserName, img_str); if (!string.IsNullOrEmpty(MediaId)) { WXService wxs = new WXService(); string send_result = wxs.SendMsg_img(msg.Msg, msg.From, msg.To, 3, MediaId); //LogUtil.log_call(this, "send_result:" + send_result); } } if (img_list.Count > 0) { Thread.Sleep(1000); } _friendUser.SendMsg(msg, false); //WXService wxs = new WXService(); //wxs.up.SendMsg(msg.Msg, msg.From, msg.To, msg.Type); } } } } LogUtil.log_call(this, "发送成功!"); } catch (Exception exception) { LogUtil.log_call(this, string.Concat("[buttonFwSndDelAll_Click]出错:", exception.ToString())); } }