public static IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == Win32.WM_COPYDATA) { Win32.COPYDATASTRUCT data = (Win32.COPYDATASTRUCT)Marshal.PtrToStructure(lParam, typeof(Win32.COPYDATASTRUCT)); string str = Marshal.PtrToStringUni(data.lpData); // Write Log //WriteToMessages(str); } return(IntPtr.Zero); }
public void SendStringViaCopyData(IntPtr handle, string message) { IntPtr lpData = Marshal.StringToHGlobalUni(message); Win32.COPYDATASTRUCT data = new Win32.COPYDATASTRUCT(); data.dwData = 0; data.cbData = message.Length * MULTIPLICATION_FACTOR_UNICODE + LENGTH_NULL_CHAR; data.lpData = lpData; IntPtr lpStruct = Marshal.AllocHGlobal( Marshal.SizeOf(data)); Marshal.StructureToPtr(data, lpStruct, false); Win32.SendMessage(handle, Win32.WM_COPYDATA, IntPtr.Zero, lpStruct); }