Ejemplo n.º 1
0
        protected virtual IntPtr WndProc(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam)
        {
            switch (msg)
            {
            case (int)WindowsMessage.WM_ACTIVATE:
                switch ((uint)wParam)
                {
                case (uint)WindowsActiveMessage.WA_INACTIVE:
                    this.proc.OnInactive();
                    break;

                case (uint)WindowsActiveMessage.WA_ACTIVE:
                case (uint)WindowsActiveMessage.WA_CLICKACTIVE:
                    this.proc.OnActive();
                    break;
                }
                break;

            case (int)WindowsMessage.WM_CLOSE:
                if (!this.proc.OnClose())
                {
                    return((IntPtr)0);
                }
                break;

            default:
                break;
            }
            return(User32.CallWindowProc(this.hWnd, hWnd, msg, wParam, lParam));
        }
Ejemplo n.º 2
0
 /// <summary>处理Rdp控件的一些消息</summary>
 private int WinRdpClientProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam)
 {
     if (msg == 15)
     {
         User32.CallWindowProc(_oldRdpClientWinProc, hwnd, msg, wParam, lParam);
         Graphics grap = Graphics.FromHwnd(hwnd);
         grap.Clear(Color.White);
         return(0);
     }
     if (msg == 20)
     {
         Graphics grap = Graphics.FromHwnd(hwnd);
         grap.Clear(Color.White);
         return(0);
     }
     if (msg == 133)
     {
         User32.CallWindowProc(_oldRdpClientWinProc, hwnd, msg, wParam, lParam);
         return(0);
     }
     if (msg == 512)//WM_MOUSEMOVE
     {
         int num = lParam.ToInt32();
         MouseMoveProc?.Invoke(CommonServices.LOWORD(num), CommonServices.HIWORD(num));
     }
     return(User32.CallWindowProc(_oldRdpClientWinProc, hwnd, msg, wParam, lParam));
 }
Ejemplo n.º 3
0
        private IntPtr WindowProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam)
        {
            try
            {
                var suppress = false;
                if (hWnd == _mainWindowHandle)
                {
                    switch ((WM)uMsg)
                    {
                    case WM.HOTKEY:
                        suppress = HandleHotkeyMessage(wParam);
                        break;

                    case WM.ACTIVATEAPP:
                        HandleActivateAppMessage(wParam);
                        break;
                    }
                }

                return(suppress
                    ? IntPtr.Zero
                    : User32.CallWindowProc(_oldWndProc, hWnd, uMsg, wParam, lParam));
            }
            catch (Exception exception)
            {
                Debug.WriteLine(exception);
            }

            return(IntPtr.Zero);
        }
Ejemplo n.º 4
0
 /// <summary>键盘鼠标输入框窗口的消息处理</summary>
 private int WinInRdpClientProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam)
 {
     if (msg == 513)//WM_LBUTTONDOWN
     {
         User32.SetFocus(hwnd);
     }
     return(User32.CallWindowProc(_oldInRdpClientWinProc, hwnd, msg, wParam, lParam));
 }
Ejemplo n.º 5
0
        private static IntPtr DefWindowProc(IntPtr window, uint message, IntPtr wparam, IntPtr lparam)
        {
            if (defaultWindowProc != IntPtr.Zero)
            {
                return(User32.CallWindowProc(defaultWindowProc, window, message, wparam, lparam));
            }

            return(User32.DefWindowProcW(window, message, wparam, lparam));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Window procedure that allows interception of needed events
        /// </summary>
        /// <param name="hWnd">The Windows Handle</param>
        /// <param name="msg">Windows Message</param>
        /// <param name="wparam">wParam</param>
        /// <param name="lparam">lParam</param>
        /// <returns>0 if message wasn't handled, any other value - the message was handled</returns>
        private uint WindowProcSubClass(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)
        {
            var result = WindowProc(hWnd, msg, wparam, lparam);

            if (result != 0)
            {
                return(result);
            }

            return(User32.CallWindowProc(originalWindowProcId, hWnd, msg, wparam, lparam));
        }
Ejemplo n.º 7
0
        private IntPtr ListBoxWndProc(IntPtr hWnd, uint msg, IntPtr wParam, IntPtr lParam)
        {
            switch ((WM)msg)
            {
            case WM.MOUSEMOVE:
                User32.ReleaseCapture();
                break;

            case WM.CAPTURECHANGED:
                return(IntPtr.Zero);
            }
            return(User32.CallWindowProc(_listBoxDefaultWndProc, hWnd, msg, wParam, lParam));
        }
Ejemplo n.º 8
0
        private IntPtr WindowProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam)
        {
            try
            {
                var suppress = false;
                switch ((WM)uMsg)
                {
                case WM.HOTKEY:
                    suppress = hWnd == _mainWindowHandle && HandleHotkeyMessage(wParam);
                    break;

                case WM.SETFOCUS:
                    Attach();
                    break;

                case WM.RUBBERDUCK_CHILD_FOCUS:
                    if (lParam == IntPtr.Zero)
                    {
                        Detach();
                    }
                    else
                    {
                        Attach();
                    }
                    return(IntPtr.Zero);

                case WM.NCACTIVATE:
                    if (wParam == IntPtr.Zero)
                    {
                        Detach();
                    }
                    break;

                case WM.CLOSE:
                    Detach();
                    break;
                }

                return(suppress
                    ? IntPtr.Zero
                    : User32.CallWindowProc(_oldWndProc, hWnd, uMsg, wParam, lParam));
            }
            catch (Exception exception)
            {
                Logger.Error(exception);
            }

            return(IntPtr.Zero);
        }
Ejemplo n.º 9
0
 /// <summary>键盘鼠标输入框窗口的消息处理</summary>
 private int WinInRdpClientProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam)
 {
     if (msg == 512)//WM_MOUSEMOVE
     {
         int num = lParam.ToInt32();
         User32.GetWindowRect(hwnd, out var chileRect);
         User32.GetWindowRect(_topWindowHwnd, out var parentRect);
         int x = chileRect.Left - parentRect.Left;
         int y = chileRect.Top - parentRect.Top;
         MouseMoveProc?.Invoke(CommonServices.LOWORD(num) + x, CommonServices.HIWORD(num) + y);
     }
     if (msg == 513)//WM_LBUTTONDOWN
     {
         User32.SetFocus(hwnd);
     }
     return(User32.CallWindowProc(_oldInRdpClientWinProc, hwnd, msg, wParam, lParam));
 }
Ejemplo n.º 10
0
        protected virtual IntPtr WindowProcedure(IntPtr handleWindow, uint message, IntPtr wParam, IntPtr lParam)
        {
            //todo: Check ForgroundWindow
//        i++;
//        debug.text = "Run" + i;

            if (message == (uint)WindowMessages.NcDestroy || message == (uint)WindowMessages.WindowPosChanging)
            {
                TerminateWindowProcedure();
            }

            if (message == (uint)WindowMessages.Size)
            {
                debug.text = ((WindowMessages)message).ToString();
            }

            if (message == (uint)WindowMessages.SizeClipboard)
            {
                debug.text = ((WindowMessages)message).ToString();
            }

            if (message == (uint)WindowMessages.NcCalcSize)
            {
                debug.text = ((WindowMessages)message).ToString();
            }

            if (message == (uint)WindowMessages.ExitSizeMove)
            {
                debug.text = ((WindowMessages)message).ToString();
            }

            if (message == (uint)WindowMessages.EnterSizeMove)
            {
                debug.text = ((WindowMessages)message).ToString();
            }

            if (message == (uint)WindowMessages.Sizing)
            {
                debug.text = ((WindowMessages)message).ToString();
            }

//        debug.text = ((WindowMessages) message).ToString();

            return(User32.CallWindowProc(OldWindowProcedurePtr, handleWindow, message, wParam, lParam));
        }
Ejemplo n.º 11
0
        /// <summary>
        /// Intercept touch/gesture events using Windows subclassing
        /// </summary>
        /// <param name="hWnd">The hWnd of the registered form</param>
        /// <param name="msg">The WM code</param>
        /// <param name="wparam">The WM WParam</param>
        /// <param name="lparam">The WM LParam</param>
        /// <returns></returns>
        private uint WindowProcSubClass(IntPtr hWnd, int msg, IntPtr wparam, IntPtr lparam)
        {
            WindowMessage(this, new WMEventArgs(hWnd, msg, wparam, lparam));

            if (msg == User32.WM_GESTURENOTIFY && GestureNotify != null)
            {
                GestureNotify(this, new GestureNotifyEventArgs(lparam));
            }
            else
            {
                uint result = WindowProc(hWnd, msg, wparam, lparam);

                if (result != 0)
                {
                    return(result);
                }
            }

            return(User32.CallWindowProc(_originalWindowProcId, hWnd, msg, wparam, lparam));
        }
Ejemplo n.º 12
0
        private IntPtr WindowProc(IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam)
        {
            try
            {
                var suppress = false;
                if (hWnd == _mainWindowHandle && (WM)uMsg == WM.HOTKEY)
                {
                    suppress = HandleHotkeyMessage(wParam);
                }

                return(suppress
                    ? IntPtr.Zero
                    : User32.CallWindowProc(_oldWndProc, hWnd, uMsg, wParam, lParam));
            }
            catch (Exception exception)
            {
                _logger.Error(exception);
            }

            return(IntPtr.Zero);
        }
Ejemplo n.º 13
0
 /// <summary>处理Rdp控件的一些消息</summary>
 private int WinRdpClientProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam)
 {
     if (msg == 15)
     {
         User32.CallWindowProc(_oldRdpClientWinProc, hwnd, msg, wParam, lParam);
         Graphics grap = Graphics.FromHwnd(hwnd);
         grap.Clear(Color.White);
         return(0);
     }
     if (msg == 20)
     {
         Graphics grap = Graphics.FromHwnd(hwnd);
         grap.Clear(Color.White);
         return(0);
     }
     if (msg == 133)
     {
         User32.CallWindowProc(_oldRdpClientWinProc, hwnd, msg, wParam, lParam);
         return(0);
     }
     return(User32.CallWindowProc(_oldRdpClientWinProc, hwnd, msg, wParam, lParam));
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Call the underlying window procedure of the Control that
 /// has been subclasssed. Note that you must call this for
 /// every message except those that you want to hide from
 /// the underlying Control.
 /// </summary>
 public IntPtr CallBaseWindowProc(
     IntPtr hWnd, uint uMsg, IntPtr wParam, IntPtr lParam)
 {
     return(User32.CallWindowProc(m_baseWndProc, hWnd, uMsg, wParam, lParam));
 }
        private IntPtr WindowProcedures(IntPtr handleWindow, uint message, IntPtr wParam, IntPtr lParam)
        {
            if (handleWindow != HandledWindow.Handle)
            {
                return(IntPtr.Zero);
            }

            if (message == (uint)WindowMessages.NcDestroy)
            {
                OnNcDestroy(handleWindow, wParam, lParam);
                TerminateWindowProcedure();
            }


            if (message == (uint)WindowMessages.GetMinMaxInfo)
            {
                OnGetMinMaxInfo(handleWindow, wParam, lParam);
            }

            if (message == (uint)WindowMessages.Sizing)
            {
                OnSizing(handleWindow, wParam, lParam);
            }

            if (message == (uint)WindowMessages.HShell_GetMinRect)
            {
                OnHShellGetMinRect(handleWindow, wParam, lParam);
            }

//            if (message != (uint) WindowMessages.Close &&
//                message != (uint) WindowMessages.Input &&
//                message != (uint) WindowMessages.WindowPosChanging &&
//                message != (uint) WindowMessages.MouseMove &&
//                message != (uint) WindowMessages.MouseActivate &&
//                message != (uint) WindowMessages.MouseHover &&
//                message != (uint) WindowMessages.MouseFirst &&
//                message != (uint) WindowMessages.MouseLast &&
//                message != (uint) WindowMessages.MouseLeave &&
//                message != (uint) WindowMessages.MouseWheel &&
//                message != (uint) WindowMessages.NC_MouseMove &&
//                message != (uint) WindowMessages.NC_MouseHover &&
//                message != (uint) WindowMessages.NC_MouseLeave &&
//                message != (uint) WindowMessages.LeftButtonDown &&
//                message != (uint) WindowMessages.LeftButtonUp &&
//                message != (uint) WindowMessages.LeftButtonDoubleClick &&
//                message != (uint) WindowMessages.NC_LeftButtonDown &&
//                message != (uint) WindowMessages.NC_LeftButtonUp &&
//                message != (uint) WindowMessages.NC_LeftButtonDoubleClick &&
//                message != (uint) WindowMessages.SetCursor &&
//                message != (uint) WindowMessages.NcHitTest &&
//                message != (uint) WindowMessages.Moving &&
//                message != (uint) WindowMessages.IME_SetContext &&
////                message != (uint) WindowMessages.CaptureChanged &&
//                message != (uint) WindowMessages.GetIcon &&
//                message != (uint) WindowMessages.KeyDown &&
//                message != (uint) WindowMessages.Char &&
//                message != (uint) WindowMessages.KeyUp &&
//                //===================================
//                message != (uint) WindowMessages.HShell_Language &&
//                message != (uint) WindowMessages.ActivateApp &&
//                message != (uint) WindowMessages.SystemKeyDown &&
//                message != (uint) WindowMessages.CaptureChanged &&
//                message != (uint) WindowMessages.WindowPosChanged &&
//                message != (uint) WindowMessages.HShell_ActivateShellWindow
////                message != (uint) WindowMessages.Char &&
//            )
//            {
//            }


            //Non Client Hit Test
            if (message == (uint)WindowMessages.NcHitTest)
            {
                OnNcHitTest(handleWindow, wParam, lParam);

                if (!IgnoreNonClientHitTest)
                {
                    //Get Cursor Area
                    var resize = GetCursorAreaFlags();

                    if (resize != HitTestValues.Client)
                    {
                        return((IntPtr)resize);
                    }
                }
            }

            return(User32.CallWindowProc(OldWindowProcedurePtr, handleWindow, message, wParam, lParam));
        }