public void StartRecMsg()
        {
            //[Todo]在这里应该加一个判断,判断是否存在一个form.name=msgForm的窗口****************************
            //如果存在,将消息传到这个窗口,如果不存在,创建一个新窗口

            //找到当前已经打开的聊天窗口的句柄
            string windowsName = "与 " + msgFrom + " 对话中";
            IntPtr handle = NativeMethods.FindWindow(null, windowsName);

            if (handle != IntPtr.Zero)
            {
                //对要发送的数据进行封装,直接发string类型,收到会出错
                byte[] sarr = Encoding.Default.GetBytes(msgDetail);
                int len = sarr.Length;
                COPYDATASTRUCT cds;
                cds.dwData = (IntPtr)100;
                cds.lpData = msgDetail;
                cds.cbData = len + 1;

                SendMessage(handle, WM_COPYDATA, 0, ref cds);
                NativeMethods.FlashWindow(handle, true);
            }
            else
            {
                FrmChat formRMsg = new FrmChat(msgIP, msgFrom,msgID, msgDetail);
                formRMsg.Text = "与 " + msgFrom + " 对话中";
                formRMsg.WindowState = FormWindowState.Minimized;
                formRMsg.ShowDialog();
                //formRMsg.Show();
                //formRMsg.WindowState = FormWindowState.Minimized;
                //IntPtr newHandle = FindWindow(null, formRMsg.Text);
                //FlashWindow(newHandle, true);
            }
        }
Ejemplo n.º 2
0
        //双击好有时
        private void chatShow_DoubleClickSubItem(object sender, ChatListEventArgs e)
        {
            ChatListSubItem item = e.SelectSubItem;
            item.IsTwinkle = false;

            //bool isFormexist;
            string windowsName = "与 " + item.NicName + " 对话中";
            IntPtr handle = NativeMethods.FindWindow(null, windowsName);
            if (handle != IntPtr.Zero)
            {
                Form frm = (Form)Form.FromHandle(handle);
                frm.Activate();
            }
            else
            {
                //ipSend为从列表中取出,要发送的对象的IP
                string ipSend = item.IpAddress;
                string nameSend = item.DisplayName;
                string idSend = item.NicName;
                string mesSend = string.Empty;
                FrmChat fChat = new FrmChat(ipSend, nameSend, idSend, mesSend);
                //fChat.Name = lvItem.SubItems[0].Text;
                fChat.Text = "与 " + item.NicName + " 对话中";
                fChat.Show();
            }
        }