小编典典

使用python检测Windows中的鼠标单击

python

无论鼠标位于哪个窗口中,如何检测鼠标单击?

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/


阅读 210

收藏
2021-01-20

共1个答案

小编典典

检测程序外部鼠标事件的唯一方法是使用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),则此循环是不必要的,因为该工具箱提供了自己的循环。

2021-01-20