[DllImport("User32.dll")] public static extern int SendMessage(IntPtr hwnd, int msg, int wParam, ref COPYDATASTRUCT lParam); public const int WM_COPYDATA = 0x004A; /// <summary> /// WM_COPYDATA消息,進程間傳輸信息專用結構 /// </summary> public struct COPYDATASTRUCT { public IntPtr dwData;//類型必須IntPtr,用來自動適應32位 64位 public int cbData; public Intptr lpData; }
發送消息:
string msg = "asdf"; byte[] sarr = Encoding.Default.GetBytes(msg); COPYDATASTRUCT cds; cds.dwData = IntPtr.Zero; //可以是任意值 cds.cbData = sarr.Length; //指定lpData內存區域的字節數 cds.lpData = Marshal.UnsafeAddrOfPinnedArrayElement(sarr,0); //發送給目標窗口所在進程的數據 SendMessage(hdl, WM_COPYDATA, 0, ref cds);