Пример #1
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);
        }
Пример #2
0
        /// <summary>
        ///
        /// </summary>
        private void DoMainLogic()
        {
            _lblWait.BringToFront();
            ((Action)(delegate()
            {
                WXService wxs = new WXService();
                JObject init_result = wxs.WxInit();  //初始化
                contact_all = new List <object>();
                contact_group = new List <object>();
                contact_friends = new List <object>();

                if (init_result != null)
                {
                    _me = new WXUser();
                    _me.UserName = init_result["User"]["UserName"].ToString();
                    _me.City = "";
                    _me.HeadImgUrl = init_result["User"]["HeadImgUrl"].ToString();
                    _me.NickName = init_result["User"]["NickName"].ToString();
                    _me.Province = "";
                    _me.PYQuanPin = init_result["User"]["PYQuanPin"].ToString();
                    _me.RemarkName = init_result["User"]["RemarkName"].ToString();
                    _me.RemarkPYQuanPin = init_result["User"]["RemarkPYQuanPin"].ToString();
                    _me.Sex = init_result["User"]["Sex"].ToString();
                    _me.Signature = init_result["User"]["Signature"].ToString();
                }

                JObject contact_result = wxs.GetContact(); //通讯录
                if (contact_result != null)
                {
                    foreach (JObject contact in contact_result["MemberList"])  //完整好友名单
                    {
                        if (contact["UserName"].ToString().Contains("@") && !contact["UserName"].ToString().Contains("@@") && contact["VerifyFlag"].ToString() == "0")
                        {
                            WXUser user = new WXUser();
                            user.UserName = contact["UserName"].ToString();
                            user.City = contact["City"].ToString();
                            user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                            user.NickName = contact["NickName"].ToString();
                            user.Province = contact["Province"].ToString();
                            user.PYQuanPin = contact["PYQuanPin"].ToString();
                            user.RemarkName = contact["RemarkName"].ToString();
                            user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                            user.Sex = contact["Sex"].ToString();
                            user.Signature = contact["Signature"].ToString();
                            user.IsOwner = Convert.ToInt32(contact["IsOwner"].ToString());
                            contact_all.Add(user);
                        }
                        if (contact["UserName"].ToString().Contains("@@"))
                        {
                            WXUser user = new WXUser();
                            user.UserName = contact["UserName"].ToString();
                            user.City = contact["City"].ToString();
                            user.HeadImgUrl = contact["HeadImgUrl"].ToString();
                            user.NickName = contact["NickName"].ToString();
                            user.Province = contact["Province"].ToString();
                            user.PYQuanPin = contact["PYQuanPin"].ToString();
                            user.RemarkName = contact["RemarkName"].ToString();
                            user.RemarkPYQuanPin = contact["RemarkPYQuanPin"].ToString();
                            user.Sex = contact["Sex"].ToString();
                            user.Signature = contact["Signature"].ToString();
                            user.IsOwner = Convert.ToInt32(contact["IsOwner"].ToString());
                            contact_group.Add(user);
                        }
                    }
                }
                IOrderedEnumerable <object> list_all = contact_all.OrderBy(e => (e as WXUser).ShowPinYin);

                WXUser wx; string start_char;
                foreach (object o in list_all)
                {
                    wx = o as WXUser;
                    start_char = wx.ShowPinYin == "" ? "" : wx.ShowPinYin.Substring(0, 1);
                    if (!_contact_all.Contains(start_char.ToUpper()))
                    {
                        _contact_all.Add(start_char.ToUpper());
                    }
                    _contact_all.Add(o);
                }

                this.BeginInvoke((Action)(delegate()   //等待结束
                {
                    _lblWait.Visible = false;
                    wFriendsList1.Items.AddRange(_contact_all.ToArray());  //通讯录
                }));


                string sync_flag = "";
                JObject sync_result;
                while (true)
                {
                    sync_flag = wxs.WxSyncCheck();  //同步检查
                    if (sync_flag == null)
                    {
                        continue;
                    }
                    //这里应该判断 sync_flag中selector的值
                    else //有消息
                    {
                        sync_result = wxs.WxSync();  //进行同步
                        if (sync_result != null)
                        {
                            if (sync_result["AddMsgCount"] != null && sync_result["AddMsgCount"].ToString() != "0")
                            {
                                foreach (JObject m in sync_result["AddMsgList"])
                                {
                                    string from = m["FromUserName"].ToString();
                                    string to = m["ToUserName"].ToString();
                                    string content = m["Content"].ToString();
                                    string type = m["MsgType"].ToString();
                                    if (type == "10000")
                                    {
                                        if (content.Contains("开启了朋友验证") || content.Contains("消息已发出,但被对方拒收"))
                                        {
                                            WXUser user = SendResult.Find(item =>
                                            {
                                                return(item.UserName == from);
                                            });
                                            if (user != null)
                                            {
                                                this.BeginInvoke((Action)(delegate()   //等待结束
                                                {
                                                    wFriendsList2.Items.Add(user);
                                                }));
                                            }
                                        }
                                    }

                                    if (_me.UserName == to && from.Contains("@@"))
                                    {
                                        switch (type)
                                        {
                                        case "3":
                                            //获取发送者标识id;
                                            var msgSendUser = content.Split(':')[0];
                                            wxs.DeleteChatroom(from, msgSendUser);
                                            break;

                                        default:
                                            break;
                                        }
                                    }
                                }
                            }
                        }
                    }
                    System.Threading.Thread.Sleep(10);
                }
            })).BeginInvoke(null, null);
        }