Python win32gui 获取窗口中虚拟光标的当前位置
Posted
技术标签:
【中文标题】Python win32gui 获取窗口中虚拟光标的当前位置【英文标题】:Python win32gui get current position of the virtual cursor in a window 【发布时间】:2021-07-09 19:12:05 【问题描述】:我知道使用win32gui.PostMessage(hwnd, win32con.WM_MOUSEMOVE, wParam, lParam)
我可以将鼠标移动到一个没有焦点的应用程序上,而不会影响我的真实鼠标。
如果win32api.GetCursorPos()
返回我的真实鼠标光标的位置,我如何获得我当前的“假鼠标”位置?
编辑#1:
我在外部应用程序上使用WM_MOUSEMOVE
,因此我唯一拥有的是应用程序的window handle
(HWND)。
【问题讨论】:
【参考方案1】:你可以使用GetMessagePos
:
检索最后一条消息的光标位置
GetMessage
函数。
更多参考:Possible to do MouseMove actions with PostMessage without hijacking the cursor?
编辑
如果你只想通过外部应用程序的HWND获取它的消息,你需要使用SetWindowsHookEx
并将其制作成dll注入到外部进程中。
您可以使用SetWindowsHookEx
函数,与WH_CALLWNDPROC
或其他类型的挂钩,here 就是一个例子。
【讨论】:
我对它的用法有点困惑。我在哪里提供 窗口处理程序 (hwnd)?在使用GetMessagePos()
之前是否需要使用GetMesssage()
函数?
只能检索属于当前线程的窗口。
所以如果我有一个应用程序(比如说画图),我有它的hwnd
,我通过WM_MOUSEMOVE
在画图中移动了虚拟鼠标,我将无法获得虚拟光标只用hwnd
?
是的,根据GetMessage
:要检索其消息的窗口的句柄。窗口必须属于当前线程。所以不能只通过hwnd获取它的内部消息。
我更新了我的问题,更具体。不幸的是,我正在尝试获取 external 应用程序的虚拟光标位置,因此我只有它的窗口处理程序。以上是关于Python win32gui 获取窗口中虚拟光标的当前位置的主要内容,如果未能解决你的问题,请参考以下文章
python 通过js控制滚动条拉取全文 通过psutil获取pid窗口句柄,通过win32gui使程序窗口前置 通过pyauto实现右键菜单和另存为操作
Python中设置指定窗口为前台活动窗口(最顶层窗口)win32gui