Skip to main content
 首页 » 编程设计

python之使用pyHook获取鼠标坐标稍后回放

2025年05月04日8zhengyun_ustc

我正在编写一大段代码来使用 pyHook 收集鼠标点击信息,然后使用 win32api 来访问点击功能。本质上,我是在尝试使用鼠标记录点击模式,以便稍后记录和回放。

这是我现在的代码:

import win32api, win32con, time, win32ui, pyHook, pythoncom 
 
#Define the clicks in the win32api 
def click(x,y): 
    win32api.SetCursorPos((x,y)) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0) 
 
def onclick(event): 
    click() 
    print event.Position 
    return True 
 
hm = pyHook.HookManager() 
hm.SubscribeMouseAllButtonsDown(click) 
hm.HookMouse() 
pythoncom.PumpMessages() 
hm.UnhookMouse() 

我敢肯定有些事情非常简单。

这也是我通过运行它得到的调试信息:

Traceback (most recent call last): 
File "C:\Python27\lib\site-packages\pyHook\HookManager.py", line 325, in MouseSwitch 
return func(event) 
TypeError: click() takes exactly 2 arguments (1 given) 

请您参考如下方法:

hm.SubscribeMouseAllButtonsDown(点击) -> hm.SubscribeMouseAllButtonsDown(点击)

删除了 onclick 中的 click() 调用。

import win32api, win32con, time, win32ui, pyHook, pythoncom 
 
def click(x,y): 
    win32api.SetCursorPos((x,y)) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0) 
 
def onclick(event): 
    print event.Position 
    return True 
 
hm = pyHook.HookManager() 
hm.SubscribeMouseAllButtonsDown(onclick) 
hm.HookMouse() 
pythoncom.PumpMessages() 
hm.UnhookMouse()