Пример #1
0
 public void Recv(Msg msg)
 {
     if (msg.MsgType != 1)
         return;
     RecvBox.Text += Data.Contactlist[msg.FromUserName].DisplayName + ":\n";
     RecvBox.Text += msg.Content + "\n";
     RecvBox.ScrollToEnd();
 }
Пример #2
0
        public void 记录消息(Msg msg)
        {
            Trace.WriteLine("记录消息");
            Trace.WriteLine("消息类型:" + msg.MsgType);
            Trace.WriteLine("消息内容:" + msg.Content);

            string friend = msg.FromUserName.Equals(Data.me.UserName) ? msg.ToUserName : msg.FromUserName;

            //暂时只支持文字
            if (msg.MsgType != 1)
                return;

            //记录消息
            if (!Data.messages.ContainsKey(friend))
                Data.messages.Add(friend, new List<Msg>());
            Data.messages[friend].Add(msg);

            //刷新消息
            if (Data.dialogs.ContainsKey(friend) && Data.dialogs[friend] != null)
            {
                //更新窗口
                Action<Msg> updateAction = new Action<Msg>(Data.dialogs[friend].Recv);
                Data.dialogs[friend].Dispatcher.BeginInvoke(updateAction, msg);
                //任务栏闪烁
                //System.Windows.Interop.WindowInteropHelper wndHelper = new System.Windows.Interop.WindowInteropHelper(Data.dialogs[friend]);
                //flashTaskBar(wndHelper.Handle, falshType.FLASHW_TIMERNOFG);
            }
            else
            {
                //加入会话列表
                if (!Data.Chatlist.ContainsKey(friend))
                    Data.Chatlist.Add(friend, Data.Contactlist[friend]);

                //刷新ui
                if (current_isChat)
                    Dispatcher.BeginInvoke(new Action<bool>(更新界面), true);
            }

            //播放声音
            if (!msg.FromUserName.Equals(Data.me.UserName))
                Data.player.Play();
        }
Пример #3
0
        public void Send(object sender, MouseButtonEventArgs e)
        {
            long time = Time.Now();
            string url = "http://wx.qq.com/cgi-bin/mmwebwx-bin/webwxsendmsg" +
                "?sid=" + Data.wxsid +
                "&skey=" + Data.skey +
                "&pass_ticket=" + Data.pass_ticket +
                "&r=" + time;
            WebRequest request = WebRequest.Create(url);
            request.Method = "POST";

            JObject jsonObj = new JObject();
            jsonObj.Add("BaseRequest", JObject.FromObject(Data.baseRequest));
            SendMsg msg = new SendMsg();
            msg.FromUserName = Data.me.UserName;
            msg.ToUserName = user.UserName;
            msg.Type = 1;
            msg.Content = SendBox.Text.Replace("\r", "");
            msg.ClientMsgId = time;
            msg.LocalID = time;
            SendBox.Clear();
            jsonObj.Add("Msg", JObject.FromObject(msg));

            byte[] byteArray = Encoding.UTF8.GetBytes(jsonObj.ToString().Replace("\r\n", ""));
            request.ContentType = "application/json; charset=UTF-8";
            request.ContentLength = byteArray.Length;
            Stream dataStream = request.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            dataStream.Close();

            WebResponse response = request.GetResponse();
            dataStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(dataStream);
            string ret = reader.ReadToEnd();
            webwxsendmsg wxsendmsg = JsonConvert.DeserializeObject<webwxsendmsg>(ret);

            reader.Close();
            dataStream.Close();
            response.Close();
            Msg recvmsg = new Msg();
            recvmsg.MsgId = wxsendmsg.MsgID;
            recvmsg.FromUserName = msg.FromUserName;
            recvmsg.ToUserName = msg.ToUserName;
            recvmsg.MsgType = msg.Type;
            recvmsg.Content = msg.Content;
            recvmsg.CreateTime = msg.LocalID;

            Trace.WriteLine("发送消息");
            Trace.WriteLine(recvmsg.Content);

            Data.main.记录消息(recvmsg);
        }