Пример #1
0
        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);
        }
Пример #2
0
        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);
        }