1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] internal struct MyStruct { public int Number; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string Message; } myStruct.Number = 1234; myStruct.Message = "hello";
int myStructSize = Marshal.SizeOf(myStruct); IntPtr pMyStruct = Marshal.AllocHGlobal(myStructSize); try { Marshal.StructureToPtr(myStruct, pMyStruct, true);
COPYDATASTRUCT cds = new COPYDATASTRUCT(); cds.cbData = myStructSize; cds.lpData = pMyStruct;
NativeMethod.SendMessage(hTargetWnd, WM_COPYDATA, NativeMethod.GetForegroundWindow(), ref cds); } |