[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);