尝试捕捉鼠标事件,但是在我的早期测试中,程序在大约30秒后停止响应[编辑:参见帖子底部],并给出此错误
这是代码。它应该只打印所有事件信息,直到崩溃为止。
import pythoncom
import pyHook
def OnMouseEvent(event):
print ('MessageName:',event.MessageName)
print ('Message:',event.Message)
print ('Time:',event.Time)
print ('Window:',event.Window)
print ('WindowName:',event.WindowName)
print ('Position:',event.Position)
print ('Wheel:',event.Wheel)
print ('Injected:',event.Injected)
print ('---')
return True
hm = pyHook.HookManager()
hm.MouseAll = OnMouseEvent
hm.HookMouse()
pythoncom.PumpMessages()
任何帮助,将不胜感激。
更新!
经过进一步测试后,崩溃似乎仅在将鼠标悬停在某些窗口(例如Skype联系人列表)上时才会发生。如果将鼠标悬停在Google Chrome浏览器窗口的标题上,也会收到相同的错误消息(但不会崩溃)。
最佳答案
当pyHook尝试将窗口名称解释为ascii时,我使用KeyboardSwitch
而不是MouseSwitch
将其跟踪到UnicodeDecodeError
。在其窗口名称中包含Unicode字符的Skype上,此操作将失败。我已经发布了如何修复它here。但是我不得不重建pyHook。
关于python - 如何避免TypeError : MouseSwitch() missing 8 required positional arguments: 'msg' , 'x', 'y', 'data', 'time', 'hwnd'和 'window_name',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27363268/