/// <summary> /// 定義結(jié)構(gòu)體 /// </summary> public struct COPYDATASTRUCT { public IntPtr dwData; //可以是任意值 public int cbData; //指定lpData內(nèi)存區(qū)域的字節(jié)數(shù) [MarshalAs(UnmanagedType.LPStr)] public string lpData; //發(fā)送給目錄窗口所在進(jìn)程的數(shù)據(jù) }
發(fā)送方: [DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam); [DllImport("User32.dll", EntryPoint = "FindWindow")] private static extern int FindWindow(string lpClassName, string lpWindowName); const int WM_COPYDATA = 0x004A;//必須是這個(gè)數(shù)值,不能更改 private void btnSend_Click(object sender, EventArgs e) { int hWnd = FindWindow(null, @"消息接受者"); if (hWnd == 0) { MessageBox.Show("未找到消息接受者!"); } else { string sendString = "測試發(fā)送數(shù)據(jù)"; byte[] sarr = System.Text.Encoding.Default.GetBytes(sendString); int len = sarr.Length; COPYDATASTRUCT cds; cds.dwData = (IntPtr)0 ; cds.cbData = len + 1; cds.lpData = sendString; SendMessage(hWnd, WM_COPYDATA, 0, ref cds); } }
接受方: private static int WMA_InterPro = 0x004A; |
|