/// <summary> /// Sends message to Alissa window. /// </summary> /// <param name="hWnd"></param> /// <param name="op"></param> /// <param name="data"></param> private void SendAlissa(IntPtr hWnd, int op, byte[] data = null) { var dataLength = 0; var dataPtr = IntPtr.Zero; if (data != null) { dataLength = data.Length; dataPtr = Marshal.AllocHGlobal(dataLength); Marshal.Copy(data, 0, dataPtr, dataLength); } WinApi.COPYDATASTRUCT cds; cds.dwData = (IntPtr)op; cds.cbData = dataLength; cds.lpData = dataPtr; var cdsBuffer = Marshal.AllocHGlobal(Marshal.SizeOf(cds)); Marshal.StructureToPtr(cds, cdsBuffer, false); this.InvokeIfRequired((MethodInvoker) delegate { WinApi.SendMessage(hWnd, WinApi.WM_COPYDATA, this.Handle, cdsBuffer); }); if (dataPtr != IntPtr.Zero) { Marshal.FreeHGlobal(dataPtr); } Marshal.FreeHGlobal(cdsBuffer); }
/// <summary> /// Sends message to Alissa window. /// </summary> /// <param name="hWnd"></param> /// <param name="op"></param> private void SendAlissa(IntPtr hWnd, int op) { WinApi.COPYDATASTRUCT cds; cds.dwData = (IntPtr)op; cds.cbData = 0; cds.lpData = IntPtr.Zero; var cdsBuffer = Marshal.AllocHGlobal(Marshal.SizeOf(cds)); Marshal.StructureToPtr(cds, cdsBuffer, false); this.InvokeIfRequired((MethodInvoker) delegate { WinApi.SendMessage(hWnd, WinApi.WM_COPYDATA, this.Handle, cdsBuffer); }); }