Example #1
0
        // 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);
            }
        }
Example #2
0
        // 定义私有构造函数,使外界不能创建该类实例
        private UserManager()
        {
            Service = WXService.GetWXService();
            JObject initResult = Service.GetInitInfo();  //初始化

            init(initResult);
        }
Example #3
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (groupid == "")
            {
                return;
            }
            listView2.Items.Clear();
            WXService wxs  = new WXService();
            wxcaozuo  wxcz = new wxcaozuo();

            wxcz.Delete();
            JObject contact_result = wxs.GetGroupItem(groupid); //群聊

            if (contact_result != null)
            {
                this.listView2.BeginUpdate();                                  //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度
                foreach (JObject contactlist in contact_result["ContactList"]) //完整好友名单
                {
                    foreach (JObject contact in contactlist["MemberList"])     //完整好友名单
                    {
                        WXUser       user = new WXUser();
                        ListViewItem lvi  = new ListViewItem();
                        lvi.Text = contact["NickName"].ToString();
                        this.listView2.Items.Add(lvi);
                        wxcz.Write("<NickName>" + contact["NickName"].ToString() + "<UserName>" + contact["UserName"].ToString() + Environment.NewLine, "Append");
                    }
                }
                this.listView2.EndUpdate();  //结束数据处理,UI界面一次性绘制。
            }
        }
Example #4
0
 public void Dispose()
 {
     this.baseService = null;
     this.loginService.Dispose();
     this.loginService = null;
     this.wxService.Dispose();
     this.wxService = null;
 }
Example #5
0
 private void Window_Closed(object sender, EventArgs e)
 {
     if (_arg != "plugin" && _wxSerivice != null)
     {
         WXService.LoginOut();
     }
     Environment.Exit(0);
 }
Example #6
0
 /// <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);
         }
     });
 }
Example #7
0
 /// <summary>
 /// 主动发送消息
 /// </summary>
 public void AutoSendMessage(string to, string content)
 {
     try
     {
         WXService wxs = new WXService();
         wxs.SendMsg(content, _me.UserName, to, 1);
     }
     catch (Exception ex)
     {
         log.Error(ex);
     }
 }
Example #8
0
 /// <summary>
 /// Automatics the send image.
 /// </summary>
 /// <param name="to">To.</param>
 /// <param name="iamgeName">Name of the iamge.</param>
 /// <param name="stream">The stream.</param>
 public void AutoSendImage(string to, string iamgeName, Stream stream)
 {
     try
     {
         WXService wxs = new WXService();
         wxs.SendImageToUserName(to, iamgeName, stream);
     }
     catch (Exception ex)
     {
         log.Error(ex);
     }
 }
Example #9
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);
        }
Example #10
0
 public Image GetHeadImage(string username)
 {
     try
     {
         WXService wxs = new WXService();
         return(wxs.GetHeadImg(username));
     }
     catch (Exception ex)
     {
         log.Error(ex);
     }
     return(null);
 }
Example #11
0
        /// <summary>
        /// 向该用户发送消息
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="showOnly"></param>
        public void SendMsg(WXMsg msg, bool showOnly)
        {
            if (!showOnly)
            {
                WXService wxs = new WXService();
                wxs.SendMsg(msg.Msg, msg.From, msg.To, msg.Type);
            }

            _sentMsg.Add(msg.Time, msg);
            if (MsgSent != null)
            {
                MsgSent(msg);
            }
        }
Example #12
0
        private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            if (e.IsTerminating)
            {
                MessageBox.Show("严重错误,这会导致程序退出!");
                Console.WriteLine("sorry! there have been some exceptions, but no handle, the program has crashed!");
                Console.WriteLine("if you aleady login in wechat, we will loginout it");

                // loginout wechat
                WXService.LoginOut();

                Environment.Exit(0);
            }
        }
Example #13
0
        private async Task <bool> InitLoginAsync()
        {
            this.loginLable.Content = "get the wechat code...";

            await Task.Run(() =>
            {
                // start login
                var ls = new LoginService();

                if (ls.LoginCheck() == null)
                {
                    this.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        this.codeImage.Source   = InternalHelp.ConvertByteToBitmapImage(ls.GetQRCode());
                        this.loginLable.Content = "please scan the code";
                    }));
                }

                // if the user scan and click login button
                while (true)
                {
                    var loginResult = ls.LoginCheck();

                    if (loginResult is byte[])
                    {
                        this.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            this.codeImage.Source   = InternalHelp.ConvertByteToBitmapImage(loginResult as byte[]);
                            this.loginLable.Content = "please click login button in you phone!";
                        }));
                    }
                    else if (loginResult is string)
                    {
                        if (ls.GetSidUid(loginResult as string))
                        {
                            break;
                        }

                        MessageBox.Show("当前环境存在异常!登录失败!");
                        Environment.Exit(0);
                    }
                }
            });

            _wxSerivice = WXService.Instance;
            return(_wxSerivice != null);
        }
Example #14
0
 /// <summary>
 /// 向该用户发送消息
 /// </summary>
 /// <param name="msg"></param>
 public void SendMsg(WXMsg msg, bool showOnly)
 {
     try
     {
         if (!showOnly)
         {
             WXService wxs = new WXService();
             wxs.SendMsg(msg.Msg, msg.From, msg.To, msg.Type, msg.Uin, msg.Sid);
         }
         _sentMsg.Add(msg.Time, msg);
         MsgSent.Invoke(msg);
     }
     catch
     {
         return;
     }
 }
Example #15
0
        public override void WillTerminate(NSNotification notification)
        {
            // Config.PICSAVEDIRECTORY一定存在,在程序初始化时就已经创建
            foreach (var item in Directory.GetFiles(Config.PICSAVEDIRECTORY))
            {
                File.Delete(item);
            }

            try
            {
                WXService.LoginOut();
            }
            catch
            {
                // 当用户未登录时候的退出
            }
        }
Example #16
0
 void wt_OnNotifySend(NotifyArgs args)
 {
     ((Action)(delegate()
     {
         if (!string.IsNullOrEmpty(args.MsgContext))
         {
             WXService s = new WXService();
             s.Sid = args.Sid;
             s.Uin = args.WxUin;
             foreach (var u in args.GroupUserName)
             {
                 //s.SendMsg(args.MsgContext, args.MyUserName, u, 1);
                 WriteLog("【发送】" + args.MsgContext);
             }
         }
     })).BeginInvoke(null, null);
 }
Example #17
0
        private void UpLoad_Click(object sender, RoutedEventArgs e)
        {
            string    sid  = LoginCore.GetPassTicket(uin).WxSid;
            string    host = LoginCore.GetPassTicket(uin).WxHost;
            WXService wxs  = new WXService
            {
                Uin       = uin,
                Sid       = sid,
                DeviceID  = "e" + LoginCore.GenerateCheckCode(15),
                BaseUrl   = "https://" + LoginCore.GetPassTicket(uin).WxHost,
                PushUrl   = "https://webpush." + LoginCore.GetPassTicket(uin).WxHost,
                UploadUrl = "https://file." + LoginCore.GetPassTicket(uin).WxHost
            };
            string FileName = "1.jpg";
            string FilePath = "c:\\1.jpg"; //文件的绝对路径
            //string FilePath = Environment.CurrentDirectory + FileName; //文件的绝对路径
            var ClientMediaId = wxs.UploadMedia(wxs.UploadUrl + Constant._uploadmedia_url, FilePath, FileName, sid, wxs.DeviceID, forwardUser, "filehelper");

            wxs.SendMsgImg("", ClientMediaId, forwardUser, "filehelper", 3);
            Core.Constant.WU_FILE_N += 1;
        }
Example #18
0
 /// <summary>
 /// 获取好友头像
 /// </summary>
 /// <param name="username">The username.</param>
 /// <returns>System.String.</returns>
 public string GetIcon(string username)
 {
     try
     {
         WXService wxs   = new WXService();
         Image     image = wxs.GetIcon(username);
         if (image != null)
         {
             MemoryStream ms = new MemoryStream();
             image.Save(ms, ImageFormat.Jpeg);
             byte[] buffer = ms.ToArray();
             ms.Dispose();
             ms.Close();
             return(Convert.ToBase64String(buffer));
         }
     }
     catch (Exception ex)
     {
         log.Error(ex);
     }
     return(string.Empty);
 }
Example #19
0
        /// <summary>
        /// Inits the login.
        /// </summary>
        public async void InitLogin()
        {
            await Task.Run(() =>
            {
                this._wxService = WXService.Instance;
                var me          = this._wxService.Me.NickName;
                this.PrintLoginInfo(me);

                this._wxService.LoginOutting += LoginOutting;
                this._wxService.InitData();

                var allFriend = this._wxService.AllContactCache;

                this._wxService.Listening(msgs =>
                {
                    foreach (var msg in msgs)
                    {
                        this.PrintMsgToUI(msg, me);
                    }
                });
            });
        }
Example #20
0
        /// <summary>
        /// 获取当前发消息人的昵称
        /// </summary>
        /// <param name="CurrentMsgSendUserId">The current MSG send user identifier.</param>
        /// <param name="memberlist_result">The memberlist_result.</param>
        /// <returns>System.String.</returns>
        private string GetCurrentMessageUserNickName(WXService service, string CurrentMsgSendUserId, string groupUserName)
        {
            //根据群用户ID,获取用户信息
            try
            {
                JObject contact_result = service.GetChatRoomContactList(groupUserName);
                if (contact_result == null)
                {
                    return(null);
                }
                var ContactList = contact_result["ContactList"];
                if (ContactList == null || ContactList.Count() == 0)
                {
                    return(null);
                }

                var memberList = ContactList[0]["MemberList"];
                if (memberList == null || memberList.Count() == 0)
                {
                    return(null);
                }
                string nickName = string.Empty;
                foreach (var item in memberList)
                {
                    if (item["UserName"].ToString() == CurrentMsgSendUserId)
                    {
                        nickName = item["NickName"].ToString();
                        break;
                    }
                }
                return(nickName);
            }
            catch (Exception ex)
            {
                log.Error(ex);
                return(string.Empty);
            }
        }
Example #21
0
        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界面一次性绘制。
            }
        }
Example #22
0
        /// <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());
            }
        }
Example #23
0
        /// <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);
        }
Example #24
0
        private void handleMsg(JObject sync_result)
        {
            if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0")
            {
                WXService wxs = new WXService
                {
                    Uin       = uin,
                    Sid       = LoginCore.GetPassTicket(uin).WxSid,
                    DeviceID  = "e" + LoginCore.GenerateCheckCode(15),
                    BaseUrl   = "https://" + LoginCore.GetPassTicket(uin).WxHost,
                    PushUrl   = "https://webpush." + LoginCore.GetPassTicket(uin).WxHost,
                    UploadUrl = "https://file." + LoginCore.GetPassTicket(uin).WxHost
                };
                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();//语音视频标识
                    if (type == "1")
                    {
                        Dispatcher.BeginInvoke(((Action) delegate()
                        {
                            //wxs.SendMsg(content, from, to, 1, uin, sid);
                            //MessageBox.Show(content);
                            //chatText.AppendText("[" + type + "]" + from + "->" + to + " : " + content + "\n");
                            //chatText.AppendText("[" + type + "]:" + content + "\n");
                            if (forward == true)
                            {
                                if (from.Contains("@@"))
                                {
                                    if (from == sCB.SelectedValue.ToString())
                                    {
                                        string[] sArray = Regex.Split(content, ":<br/>", RegexOptions.IgnoreCase);
                                        var aa = sCB.SelectedValue.ToString();
                                        if (sArray[0] == smCB.SelectedValue.ToString())
                                        {
                                            wxs.SendMsg(sArray[1], forwardUser, dCB.SelectedValue.ToString(), int.Parse(type));
                                            supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":" + sArray[1];
                                        }

                                        /*
                                         * if (sArray[0] == smCB.SelectedValue.ToString())
                                         *  foreach (var g in dGroup)
                                         *  {
                                         *      wxs.SendMsg(sArray[1], forwardUser, g, int.Parse(type));
                                         *      //Thread.Sleep(100);
                                         *  }
                                         */
                                    }
                                }
                                //chatText.AppendText("[" + msg.Type + "]" + wxc.GetNickName(from) + "->" + wxc.GetNickName(to) + " : " + content + "\n");
                                //chatText.PageDown();
                                //chatText.AppendText("\nmsg:                 "+sync_result["AddMsgList"].ToString());
                                //debugTextBox.AppendText(m.ToString());
                            }
                        }));
                    }
                    else if (type == "3")//图片
                    {
                        string sFilePath = Environment.CurrentDirectory + "\\IMG";
                        Dispatcher.BeginInvoke(((Action) delegate()
                        {
                            if (forward == true)
                            {
                                if (from.Contains("@@"))
                                {
                                    if (from == sCB.SelectedValue.ToString())
                                    {
                                        string[] sArray = Regex.Split(content, ":<br/>", RegexOptions.IgnoreCase);
                                        if (sArray[0] == smCB.SelectedValue.ToString())
                                        {
                                            wxs.SendMsgImg("", sArray[1], forwardUser, dCB.SelectedValue.ToString(), int.Parse(type));
                                            supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":转发了图片";
                                        }

                                        /*
                                         * foreach (var g in dGroup)
                                         * {
                                         *    //wxs.SendMsgImg(ClientMediaId, forwardUser, g, int.Parse(type), uin, sid);
                                         *    wxs.SendMsgImg("", sArray[1], forwardUser, g, int.Parse(type));
                                         *    //Thread.Sleep(300);
                                         * }
                                         */
                                    }
                                }
                                //chatText.AppendText("[" + msg.Type + "]" + wxc.GetNickName(from) + "->" + wxc.GetNickName(to) + " : " + content + "\n");
                                //chatText.PageDown();
                                //chatText.AppendText("\nmsg:                 "+sync_result["AddMsgList"].ToString());
                                //debugTextBox.AppendText(m.ToString());
                            }
                        }));
                    }
                    else if (type == "47")//动态表情
                    {
                        Dispatcher.BeginInvoke(((Action) delegate()
                        {
                            if (forward == true)
                            {
                                if (from.Contains("@@"))
                                {
                                    //chatText.AppendText("[" + type + "]" + from + "->" + to + " : " + content + "\n");

                                    var aa = sCB.SelectedValue.ToString();
                                    if (from == sCB.SelectedValue.ToString())
                                    {
                                        string[] sArray = Regex.Split(content, ":<br/>", RegexOptions.IgnoreCase);
                                        if (sArray[0] == smCB.SelectedValue.ToString())
                                        {
                                            Regex reg = new Regex(@"md5=.(.*).\slen");
                                            Match match = reg.Match(sArray[1]);
                                            var aaa = match.Groups[1].Value;
                                            var bb = forwardUser;
                                            wxs.SendEmoticon(match.Groups[1].Value, forwardUser, dCB.SelectedValue.ToString(), int.Parse(type));
                                            supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":转发了表情";
                                        }

                                        /*
                                         *  foreach (var g in dGroup)
                                         *  {
                                         *      Regex reg = new Regex(@"md5=.(.*).\slen");
                                         *      Match match = reg.Match(sArray[1]);
                                         *      var aaa = match.Groups[1].Value;
                                         *      var bb = forwardUser;
                                         *      wxs.SendEmoticon(match.Groups[1].Value, forwardUser, g, int.Parse(type));
                                         *      //Thread.Sleep(100);
                                         *  }
                                         */
                                    }
                                }
                            }
                        }));
                    }
                    else
                    {
                        //this.Dispatcher.BeginInvoke((Action)(delegate ()
                        //{
                        //supLB.Content = DateTime.Now.ToLongTimeString().ToString() + ":消息同步中";

                        //}));
                    }
                }
            }

            /*
             * else
             * {
             *  var _syncKey = new Dictionary<string, string>();
             *  foreach (JObject synckey in sync_result["SyncKey"]["List"])  //同步键值
             *  {
             *      _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString());
             *  }
             *  //保存最新key
             *  LoginCore.SyncKey(uin, _syncKey);
             * }
             */
        }
Example #25
0
        public void AddToList(string uin)
        {
            ((Action)(delegate()
            {
                string sid = LoginCore.GetPassTicket(uin).WxSid;
                string WXUser_url = LoginCore.GetPassTicket(uin).WXUser_url;//传值不同域名不同的
                WXService wx = new WXService();
                wx.Uin = uin;
                wx.Sid = sid;
                JObject init_result = wx.WxInit();
                var partUsers = new List <WXUser>();
                foreach (JObject contact in init_result["ContactList"])  //部分好友名单
                {
                    WXUser user = new WXUser();
                    //传值uin sin
                    user.uin = 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();
                    partUsers.Add(user);
                }

                var _me = new WXUser();
                if (init_result != null)
                {
                    _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();
                    Tools.WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆");

                    if (string.IsNullOrEmpty(_me.NickName))
                    {
                        WriteLog("【警告】" + _me.NickName + "不能在此软件运行,请切换版本或重新扫描登陆");
                        Tools.WriteLog("【警告】" + uin + "不能在此软件运行,请切换版本或重新扫描登陆");
                        return;
                    }

                    var _syncKey = new Dictionary <string, string>();

                    foreach (JObject synckey in init_result["SyncKey"]["List"])  //同步键值
                    {
                        _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString());
                    }
                    //保存最新key
                    LoginCore.AddSyncKey(uin, _syncKey);
                    //更新数据库
                    var table = WeChatRobotDal.GetWxRobot(_me.NickName);
                    if (table.Rows.Count == 0)
                    {
                        WriteLog("【警告】" + _me.NickName + "没有加入系统中");
                        return;
                    }
                    partUsers.Add(_me);
                    WxContact _contact = new WxContact(uin); //记住此处不适合再开线程
                    _contact.InitContact(partUsers);         //初始联系人

                    WeChatRobotDal.UpdateUin(_me.NickName, uin);

                    #region 加入listview
                    if (!_dic.ContainsKey(uin))
                    {
                        this.BeginInvoke((Action) delegate()
                        {
                            this.WechartListView.BeginUpdate();
                            //把扫描好的微信加入到列表中
                            ListViewItem item = new ListViewItem();
                            item.Text = uin;
                            item.SubItems.Add(_me.UserName);
                            item.SubItems.Add(_me.ShowName);
                            item.SubItems.Add(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            item.SubItems.Add("0");
                            item.SubItems.Add(table.Rows[0]["EndDate"].ToString());
                            this.WechartListView.Items.Add(item);
                            this.WechartListView.EndUpdate();
                            //设置下高度
                            ImageList image = new ImageList();
                            image.ImageSize = new Size(10, 50);//这边设置宽和高
                            this.WechartListView.SmallImageList = image;
                            //隐藏以下按钮
                            //this.WechartListView.Columns[1].Width = 0;
                            //this.WechartListView.Columns[0].Width = 0;
                            //this.WechartListView.Columns[4].Width = 0;
                            //this.WechartListView.Columns[5].Width = 0;
                        });
                        _dic.Add(uin, uin);
                        //#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
                    }
                    #endregion
                }
                if (!Uins.Contains(uin))
                {
                    Uins.Add(uin);
                }
                LoginCore.AddOnLineUin(Uins);
                UpDataFromData();
            })).BeginInvoke(null, null);
        }
Example #26
0
        public string Handle(JToken msgInfo)
        {
            var msg          = msgInfo["Content"].ToString();
            var msgType      = msgInfo["MsgType"].ToString();
            var appMsgType   = msgInfo["AppMsgType"].ToString();
            var subMsgType   = msgInfo["SubMsgType"].ToString();
            var fromUserName = msgInfo["FromUserName"].ToString();

            if (fromUserName.StartsWith("@@"))
            {
                msg = Regex.Replace(msg, @"^(@[a-zA-Z0-9]+|[a-zA-Z0-9_-]+):<br/>", string.Empty);
            }

            // text msg
            if (msgType == "1")
            {
                if (subMsgType == "48")
                {
                    return($"对方给你发来位置信息: {msg.Split(new[] { ":<br/>" }, StringSplitOptions.RemoveEmptyEntries)[0]}");
                }
                if (fromUserName.StartsWith("@@")) // 群消息
                {
                    return(WXService.DecodeMsgFace(msg));
                }
                return(fromUserName.Equals("newsapp") ? "[腾讯新闻消息]" : WXService.DecodeMsgFace(msg.Replace("<br/>", string.Empty)));
            }

            // maybe from brand contact
            if (msgType == "49")
            {
                if (appMsgType == "5")
                {
                    // brandContact msg
                    var msged = _wxService.AllContactCache.Single(o => o.UserName == fromUserName).UserType != UserType.BrandContact ?
                                "[链接]: " : "来自公众号的消息: ";
                    var el       = System.Xml.Linq.XElement.Parse(WXService.HtmlDecode(msg).Replace("<br/>", string.Empty));
                    var allItems = el.Element("appmsg")?.Element("mmreader")?.Element("category")?.Elements("item");
                    if (allItems == null)
                    {
                        msged += "\r\nTitle: " + WXService.DecodeMsgFace(el.Element("appmsg")?.Element("title")?.Value);
                        msged += "\r\nDigest: " + WXService.DecodeMsgFace(el.Element("appmsg")?.Element("des")?.Value);
                        //msged += "\r\nUrl: " + DecodeMsgFace(el.Element("appmsg")?.Element("url")?.Value);

                        return(msged);
                    }

                    foreach (var item in allItems)
                    {
                        var title = WXService.DecodeMsgFace(item.Element("title")?.Value);
                        //var url = item.Element("url")?.Value;
                        var digest = WXService.DecodeMsgFace(item.Element("digest")?.Value);

                        msged += $"\r\nTitle: [{title}]\r\nDigest: [{digest}]" /*\r\nUrl: [{url}]*/;
                    }

                    return(msged);
                }

                switch (appMsgType)
                {
                case "2000":
                    return("[对方向你转账消息]");
                }
            }

            // other msg
            switch (msgType)
            {
            case "3":
                return("[图片消息]");

            case "47":
                return("[对方收藏图片]");

            case "34":
                return("[语音消息]");

            case "43":
                return("[视频]");

            case "62":
                return("[小视频]");

            case "53":
                return("[对方语音或视频呼叫你]");

            case "10000":     // 包含红包消息
                return(msg);

            case "42":
                return($"她向你推荐了名片: [{WXService.DecodeMsgFace(Regex.Match(msg, "nickname=\"(.*)\"").Groups[1].Value)}]");

            case "10002":
                return("[对方撤回了一条消息]");
            }

            return(msg);
        }
Example #27
0
 public MsgHandle()
 {
     _wxService = WXService.Instance;
 }
Example #28
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);
        }
Example #29
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()));
            }
        }
Example #30
0
        /// <summary>
        ///
        /// </summary>
        private void DoMainLogic()
        {
            _lblWait.BringToFront();
            ((Action)(delegate()
            {
                UserManager userManager = UserManager.GetInstance();
                WXService wxs = WXService.GetWXService();

                _me = userManager.GetCurrentUser();
                _contact_latest.AddRange(userManager.GetRecentFriend());
                List <object> contact_all = userManager.GetAllFriend();
                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 = content;   //只接受文本消息
                                    msg.Readed = false;
                                    msg.Time = DateTime.Now;
                                    msg.To = to;
                                    msg.Type = int.Parse(type);

                                    MessageServer.GetInstance().notifyMessage(msg);
                                }
                            }
                        }
                    }
                    System.Threading.Thread.Sleep(10);
                }
            })).BeginInvoke(null, null);
        }