无论鼠标位于哪个窗口中,如何检测鼠标单击?
Perferabliy用python编写,但是如果有人可以用任何语言解释它,我也许就能弄清楚。
我在微软的网站上找到了这个:http : //msdn.microsoft.com/en- us/library/ms645533(VS.85).aspx
但是我看不到如何检测或接收列出的通知。
使用pygame的pygame.mouse.get_pos()函数尝试如下:
import pygame pygame.init() while True: print pygame.mouse.get_pos()
这仅返回0,0。我对pygame不熟悉,是否缺少某些内容?
无论如何,我都希望不需要安装第三方模块的方法。(而不是pywin32 http://sourceforge.net/projects/pywin32/)
检测程序外部鼠标事件的唯一方法是使用SetWindowsHookEx安装Windows挂钩。该pyHook模块封装的细枝末节。这是一个示例,它将打印每次鼠标单击的位置:
import pyHook import pythoncom def onclick(event): print event.Position return True hm = pyHook.HookManager() hm.SubscribeMouseAllButtonsDown(onclick) hm.HookMouse() pythoncom.PumpMessages() hm.UnhookMouse()
您可以检查模块随附的 example.py 脚本,以获取有关 事件 参数的更多信息。
pyHook在纯Python脚本中使用可能会比较棘手,因为它需要一个活动的消息泵。从教程:
任何希望接收全局输入事件通知的应用程序都必须具有Windows消息泵。获得其中一种的最简单方法是使用Win32 Extensions软件包的Python中的PumpMessages方法。[…]运行时,该程序只是闲置并等待Windows事件。如果使用的是GUI工具箱(例如wxPython),则此循环是不必要的,因为该工具箱提供了自己的循环。