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)); }
/// <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)); }
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); }
/// <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)); }
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)); }
/// <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)); }
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)); }
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); }
/// <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)); }
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)); }
/// <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)); }
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); }
/// <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)); }
/// <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)); }