예제 #1
0
 public Parameters()
 {
     data        = new NativeMethods.CopyDataStruct();
     data.dwData = Identificator;
     data.cbData = 0;
     data.data   = IntPtr.Zero;
 }
예제 #2
0
 public Parameters()
 {
     data = new NativeMethods.CopyDataStruct();
     data.dwData = Identificator;
     data.cbData = 0;
     data.data = IntPtr.Zero;
 }
예제 #3
0
        /// <summary>
        /// 向指定句柄窗口发送消息
        /// </summary>
        /// <param name="handle">接收消息的窗口句柄</param>
        /// <param name="flag"></param>
        /// <param name="message"></param>
        public static void SendMessage(this IntPtr handle, int flag, string message)
        {
            // 设置消息结构体
            var data = new NativeMethods.CopyDataStruct
            {
                dwData = (IntPtr)flag
            };

            if (message != null)
            {
                int len = Encoding.Default.GetBytes(message).Length;
                data.lpData = message;
                data.cbData = len + 1;
            }
            NativeMethods.SendMessage(handle, (int)NativeMethods.WindowsMessage.WM_COPYDATA, 0, ref data);
        }
        private static bool SendCopyDataMessage(string message)
        {
            targetWindow = IntPtr.Zero;
            NativeMethods.EnumWindows(new NativeMethods.EnumWindowsCallback(EnumWindow), 0);
            if (targetWindow != IntPtr.Zero)
            {
                char[] chars = message.ToCharArray();
                NativeMethods.CopyDataStruct data = new NativeMethods.CopyDataStruct();
                data.Padding = IntPtr.Zero;
                data.Size = chars.Length * 2;
                data.Buffer = Marshal.AllocHGlobal(data.Size);
                Marshal.Copy(chars, 0, data.Buffer, chars.Length);
                bool result = NativeMethods.SendMessage(targetWindow, 0x004A, IntPtr.Zero, ref data); // WM_COPYDATA
                Marshal.FreeHGlobal(data.Buffer);
                return result;
            }

            return false;
        }
        private static bool SendCopyDataMessage(string message)
        {
            targetWindow = IntPtr.Zero;
            NativeMethods.EnumWindows(new NativeMethods.EnumWindowsCallback(EnumWindow), 0);
            if (targetWindow != IntPtr.Zero)
            {
                char[] chars = message.ToCharArray();
                NativeMethods.CopyDataStruct data = new NativeMethods.CopyDataStruct();
                data.Padding = IntPtr.Zero;
                data.Size    = chars.Length * 2;
                data.Buffer  = Marshal.AllocHGlobal(data.Size);
                Marshal.Copy(chars, 0, data.Buffer, chars.Length);
                bool result = NativeMethods.SendMessage(targetWindow, 0x004A, IntPtr.Zero, ref data); // WM_COPYDATA
                Marshal.FreeHGlobal(data.Buffer);
                return(result);
            }

            return(false);
        }
예제 #6
0
 public Parameters(IntPtr lParam)
 {
     data = (NativeMethods.CopyDataStruct)Marshal.PtrToStructure(lParam, typeof(NativeMethods.CopyDataStruct));
 }
예제 #7
0
 public Parameters(IntPtr lParam)
 {
     data = (NativeMethods.CopyDataStruct)Marshal.PtrToStructure(lParam, typeof(NativeMethods.CopyDataStruct));
 }