Python 如何避免类型错误:MouseSwitch()缺少8个必需的位置参数:';msg'';x'';y'';数据'';时间'';hwnd';,和';窗口名称';

Python 如何避免类型错误:MouseSwitch()缺少8个必需的位置参数:';msg'';x'';y'';数据'';时间'';hwnd';,和';窗口名称';,python,typeerror,pyhook,Python,Typeerror,Pyhook,试图钩住鼠标事件,但在我早期的测试中,程序在大约30秒后停止响应[编辑:参见文章底部],并给出此错误 TypeError:MouseSwitch()缺少8个必需的位置参数:“msg”、“x”、“y”、“data”、“time”、“hwnd”和“window\u name” 这是密码。它应该只打印所有事件信息,直到崩溃 import pythoncom import pyHook def OnMouseEvent(event): print ('MessageName:',event.M

试图钩住鼠标事件,但在我早期的测试中,程序在大约30秒后停止响应[编辑:参见文章底部],并给出此错误

TypeError:MouseSwitch()缺少8个必需的位置参数:“msg”、“x”、“y”、“data”、“time”、“hwnd”和“window\u name”

这是密码。它应该只打印所有事件信息,直到崩溃

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时将其跟踪到
UnicodeDecodeError
。它在窗口名中包含unicode字符的Skype上失败。我已经发布了我是如何修复它的。但是我必须重新构建pyHook。

pyHook更面向python 2。github中有一些存储库可以在python 3中使用它作为修改和扩展,而且最好在python 3中使用pynput,如下所示:

#-*-编码:utf-8-*-
从pynput.keyboard导入侦听器
def钥匙记录仪(钥匙):
f=打开('keylogger.txt','a')
keyo=str(键)
如果keyo==“Key.enter”:
f、 写入('\n')
elif keyo==“Key.space”:
f、 写(“”)
elif keyo==“Key.backspace”:
#f、 写入(keyo.replace)(keyo,“”)
size=f.tell()#大小。。。
f、 截断(大小为1)
elif keyo==“Key.alt_l”或keyo==“Key.tab”:
f、 写(“”)
elif keyo==“Key.ctrl\u l”:
f、 写(“”)
elif keyo==“Key.alt\u gr”:
f、 写(“”)
其他:
打印(按键)
f、 写入(keyo.replace(“,”))
将侦听器(按=按键录制器)设置为l:
l、 加入

请粘贴完整的回溯,而不仅仅是最后的错误消息。它不会给出一条,只给出一条消息并停止响应如果您删除了除
返回真值
之外的所有内容怎么办?如果我删除了除
返回真值
之外的所有内容,我会得到相同的错误。这些库是否使用
日志记录
?我们可以通过
logging.basicConfig(level=logging.DEBUG)
调用获得有用的信息吗?