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); } }
//双击好有时 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(); } }