Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        /// <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);
            });
        }