Ram*_*hum 7 python windows wxpython keyboard-hook
我正试图用wxPython做些什么,我无法弄清楚如何做.(我在Windows 7上,我只使用Windows解决方案.)
我想在全球范围内捕捉关键事件.这意味着关键,关键和char事件.(我正在尝试在Python中构建类似AHK的东西.)
现在,我知道wxPython允许全局热键,但这并不令人满意,因为我想获得所有事件,包括key up,key down和char.我怎样才能做到这一点?
我尝试使用pyHook,除了char事件之外几乎没有实现.Char事件似乎很棘手,我想知道如何在全球捕获它们.(即在所有应用程序中.)我也可以使用除wxPython之外的其他工具的解决方案.(除了没有单独的GUI框架,我很高兴使用wxPython作为GUI,只是用于捕获char事件的工具.)
抱歉,您无法直接从 Python 可执行文件捕获 WM_CHAR 事件。您需要编写一个本机 Windows DLL 来挂钩 WH_GETMESSAGE,然后单独通知您的 Python 进程按下了某个键。
正如您在这里看到的,捕获 WM_CHAR 的方法是使用 WH_GETMESSAGE 挂钩捕获 GetMessage() 读取的事件。遗憾的是,该消息的任何全局挂钩都必须能够在任何进程的上下文中运行,因此必须作为 DLL 实现(按照 API文档的规定)。这意味着您无法在 Python 进程中执行此操作。Python win32 档案中也对此进行了介绍。
这意味着您需要编写一个本机 DLL 来挂钩消息,然后使用您最喜欢的 IPC 形式(例如,将消息发布到另一个窗口)将任何有趣的事件传递到您的 Python 进程。
如果您确实只需要 AutoHotKey 的 Python 绑定,您可以使用pyahk来为您完成此操作。