Exemple #1
0
 /// <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;
            }
        }
Exemple #3
0
        /// <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;
            }
        }
Exemple #4
0
        /// <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            = "";
        }
Exemple #5
0
 /// <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);
 }
Exemple #8
0
 /// <summary>
 /// 向该用户发送消息
 /// </summary>
 /// <param name="msg"></param>
 public void SendMsg(WXMsg msg)
 {
     _sentMsg.Add(msg);
     if (MsgSent != null)
     {
         MsgSent(msg);
     }
 }
Exemple #9
0
        /// <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());
     }
 }
Exemple #11
0
        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);
        }
Exemple #12
0
        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);
        }
Exemple #13
0
        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);
            }
        }
Exemple #14
0
        /// <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);
            }
        }
Exemple #15
0
        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);
        }
Exemple #17
0
        /// <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;
        }
Exemple #18
0
 /// <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);
     }
 }
Exemple #19
0
        /// <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);
        }
Exemple #20
0
        /// <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();
            }
        }
Exemple #22
0
        /// <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());
            }
        }
Exemple #24
0
        /// <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;
        }
Exemple #25
0
 /// <summary>
 /// 收到新消息
 /// </summary>
 /// <param name="msg"></param>
 void _friendUser_MsgRecved(WXMsg msg)
 {
     ShowReceiveMsg(msg);
 }
Exemple #26
0
 /// <summary>
 /// 发送消息完成
 /// </summary>
 /// <param name="msg"></param>
 void _friendUser_MsgSent(WXMsg msg)
 {
     ShowSendMsg(msg);
 }
Exemple #27
0
        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));
            }
        }
Exemple #28
0
        /// <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));
                            }
                        }
                    }
                }
            }
        }
Exemple #29
0
        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);
        }
Exemple #30
0
        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()));
            }
        }