From 89c6e5014fdc953337a344c740fb96623be661e5 Mon Sep 17 00:00:00 2001 From: yuanyuanxiang <962914132@qq.com> Date: Sun, 13 Jul 2025 21:53:10 +0800 Subject: [PATCH] fix: Lost control when operating high permission windows --- client/ScreenManager.cpp | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/client/ScreenManager.cpp b/client/ScreenManager.cpp index 18b9dc0..fa42e41 100644 --- a/client/ScreenManager.cpp +++ b/client/ScreenManager.cpp @@ -626,22 +626,20 @@ VOID CScreenManager::ProcessCommand(LPBYTE szBuffer, ULONG ulLength) (MSG64*)msg64.Create(msg32.Create(ptr, msgSize)); switch (Msg->message) { - case WM_LBUTTONDOWN: - case WM_LBUTTONUP: - case WM_RBUTTONDOWN: - case WM_RBUTTONUP: + case WM_LBUTTONDOWN: case WM_LBUTTONUP: case WM_RBUTTONDOWN: case WM_RBUTTONUP: + case WM_LBUTTONDBLCLK: case WM_RBUTTONDBLCLK: case WM_MBUTTONDOWN: case WM_MBUTTONUP: case WM_MOUSEMOVE: - case WM_LBUTTONDBLCLK: - case WM_RBUTTONDBLCLK: - case WM_MBUTTONDOWN: - case WM_MBUTTONUP: { POINT Point; Point.x = LOWORD(Msg->lParam); Point.y = HIWORD(Msg->lParam); m_ScreenSpyObject->PointConversion(Point); - SetCursorPos(Point.x, Point.y); - SetCapture(WindowFromPoint(Point)); + BOOL b = SetCursorPos(Point.x, Point.y); + if (!b) { + SetForegroundWindow(GetDesktopWindow()); + ReleaseCapture(); + return; + } } break; default: