Esempio n. 1
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;
        }
Esempio n. 2
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);
             * }
             */
        }
Esempio n. 3
0
        public void DoLogic()
        {
            sCB.IsEnabled   = false;
            smCB.IsEnabled  = false;
            overTimeTB.Text = "授权时间截止至 [ " + Core.Constant.overtime + " ]";
            //dLV.IsEnabled = false;
            uin = Core.Constant.Uin;
            List <Object> _contact_all = new List <object>();


            ((Action)(delegate()
            {
                LoginCore.InitCookie(uin);
                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
                };
                JObject init_result = wxs.WxInit();  //初始化
                var partUsers = new List <WXUser>();
                if (init_result != null)
                {
                    this.Dispatcher.BeginInvoke(((Action) delegate()  //等待结束
                    {
                        supLB.Content = "加载个人信息...";
                    }));
                    var _me = new WXUser
                    {
                        uin = wxs.Uin,
                        UserName = init_result["User"]["UserName"].ToString(),
                        City = "",
                        HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString(),
                        NickName = init_result["User"]["NickName"].ToString(),
                        Province = "",
                        PYQuanPin = init_result["User"]["PYQuanPin"].ToString(),
                        RemarkName = init_result["User"]["RemarkName"].ToString(),
                        RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString(),
                        Sex = init_result["User"]["Sex"].ToString(),
                        Signature = init_result["User"]["Signature"].ToString(),
                    };
                    forwardUser = _me.UserName;
                    partUsers.Add(_me);
                    this.Dispatcher.BeginInvoke((Action)(delegate()   //等待结束
                    {
                        //var aa = wxs.BaseUrl + _me.HeadImgUrl;
                        //headImage.Source = new BitmapImage(new Uri(aa));
                        headImage.Source = BitmapFrame.Create(wxs.GetIcon(_me.UserName, uin), BitmapCreateOptions.None, BitmapCacheOption.Default);
                    }));
                    this.Dispatcher.BeginInvoke(((Action) delegate()  //等待结束
                    {
                        supLB.Content = "加载最近联系人...";
                    }));
                    foreach (JObject contact in init_result["ContactList"])  //部分好友名单
                    {
                        WXUser user = new WXUser();
                        user.uin = wxs.Uin;
                        user.UserName = contact["UserName"].ToString();
                        user.City = contact["City"].ToString();
                        user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                        user.NickName = contact["NickName"].ToString();
                        user.Province = contact["Province"].ToString();
                        user.PYQuanPin = contact["PYQuanPin"].ToString();
                        user.RemarkName = contact["RemarkName"].ToString();
                        user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                        user.Sex = contact["Sex"].ToString();
                        user.Signature = contact["Signature"].ToString();
                        partUsers.Add(user);
                    }


                    var _syncKey = new Dictionary <string, string>();
                    foreach (JObject synckey in init_result["SyncKey"]["List"])  //同步键值
                    {
                        _syncKey.Add(synckey["Key"].ToString(), synckey["Val"].ToString());
                    }
                    //保存最新key
                    LoginCore.SyncKey(uin, _syncKey);
                    this.Dispatcher.BeginInvoke(((Action) delegate()  //等待结束
                    {
                        supLB.Content = "初始化联系人...";
                    }));
                    WxContact _contact = new WxContact(uin); //记住此处不适合再开线程
                    _contact.InitContact(partUsers);         //初始联系人

                    Dictionary <string, string> Groups = new Dictionary <string, string>();
                    foreach (var g in _contact.GetGroupUserNames())
                    {
                        Groups.Add(g, _contact.GetGroupMemberNames(g).NickName);
                    }
                    this.Dispatcher.BeginInvoke((Action)(delegate()   //等待结束
                    {
                        sCB.ItemsSource = Groups;
                        sCB.DisplayMemberPath = "Value";
                        sCB.SelectedValuePath = "Key";
                        smCB.DisplayMemberPath = "Value";
                        smCB.SelectedValuePath = "Key";
                        supLB.Content = "进入监听模式...";
                        sCB.IsEnabled = true;
                        smCB.IsEnabled = true;
                        //dLV.IsEnabled = true;
                    }));
                    string sync_flag = null;
                    JObject sync_result;
                    sync_flag = wxs.WxSyncCheck();  //同步检查
                    DateTime lastCheckTs = DateTime.Now;
                    while (true)
                    {
                        if (sync_flag != null)
                        {
                            var retcode = sync_flag.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[1];
                            var selector = sync_flag.ToString().Split(new string[] { "\"" }, StringSplitOptions.None)[3];
                            //this.Dispatcher.BeginInvoke((Action)(delegate ()
                            //{
                            //supLB.Content = "{retcode:" + retcode + " selector:" + selector + "}";

                            //}));
                            if (retcode == "1100")
                            {
                                this.Dispatcher.BeginInvoke((Action)(delegate()
                                {
                                    headBorder.BorderBrush = Brushes.Red;
                                }));
                                MessageBox.Show("你在手机上登出了微信,债见");
                                break;
                            }
                            if (retcode == "1101")
                            {
                                this.Dispatcher.BeginInvoke((Action)(delegate()
                                {
                                    headBorder.BorderBrush = Brushes.Red;
                                }));
                                MessageBox.Show("你在其他地方登录了 WEB 版微信,债见");
                                break;
                            }
                            else if (retcode == "0")
                            {
                                this.Dispatcher.BeginInvoke((Action)(delegate()
                                {
                                    headBorder.BorderBrush = Brushes.GreenYellow;
                                }));
                                if (selector == "2")
                                {
                                    sync_result = wxs.WxSync();  //进行同步
                                    lastCheckTs = DateTime.Now;
                                    if (sync_result != null)
                                    {
                                        handleMsg(sync_result);
                                    }
                                    //this.Dispatcher.BeginInvoke((Action)(delegate ()
                                    //{
                                    //supLB.Content = "";
                                    //}));
                                }
                                else if (selector == "0")
                                {
                                    //this.Dispatcher.BeginInvoke((Action)(delegate ()
                                    //{
                                    //supLB.Content = "";
                                    //}));

                                    Thread.Sleep(500);
                                }
                                else
                                {
                                    sync_result = wxs.WxSync();  //进行同步
                                    this.Dispatcher.BeginInvoke((Action)(delegate()
                                    {
                                        supLB.Content = "最后同步:{retcode:" + retcode + " selector:" + selector + "}";
                                    }));
                                    //this.Dispatcher.BeginInvoke((Action)(delegate ()
                                    //{
                                    //chatText.AppendText("\n" + selector + "\n-------" + sync_result.ToString() + "-------\n");
                                    //}));
                                }
                            }
                            sync_flag = null;
                            this.Dispatcher.BeginInvoke((Action)(delegate()
                            {
                                headBorder.BorderBrush = Brushes.Blue;
                            }));
                        }

                        if ((DateTime.Now - lastCheckTs).Seconds < 23)
                        {
                            var sleep = (DateTime.Now - lastCheckTs).Seconds;

                            Thread.Sleep(1000);

                            sync_flag = wxs.WxSyncCheck();  //同步检查
                        }
                        else
                        {
                            sync_flag = wxs.WxSyncCheck();
                            lastCheckTs = DateTime.Now;
                        }
                        this.Dispatcher.BeginInvoke((Action)(delegate()
                        {
                            sleepTB.Text = ((DateTime.Now - lastCheckTs).Seconds).ToString();
                            supLB.Content = "最后同步:" + DateTime.Now.ToLongTimeString().ToString();
                        }));
                    }
                }
            })).BeginInvoke(null, null);
        }