gpt4 book ai didi

python - 在 Windows 上,如何安装最低级别的全局键盘 Hook ?

转载 作者:可可西里 更新时间:2023-11-01 13:27:26 31 4
gpt4 key购买 nike

我正在 Windows 上使用 python 开发自定义街机启动器。我想选择系统和游戏,然后启动模拟器 - 并需要特定的组合键才能杀死模拟器。在使用随机应用程序进行测试时,我所有的键 Hook 都可以工作,但是当我实际启动模拟器(例如 Nestopia)时,我的键 Hook 无法触发。我目前正在使用 RegisterHotKey,它获取事件而不是热键。任何人都知道如何安装足够低的东西以在 Nestopia 之前实际获得事件?这是我的代码:

import ctypes
import win32con
from ctypes import wintypes
from ctypes import byref
user32 = ctypes.windll.user32

class SimpleKeyboardHook:

def getNextId(self):
SimpleKeyboardHook._id += 1
return SimpleKeyboardHook._id

# modifiers is a bitmask with win32con.[MOD_SHIFT, MOD_ALT, MOD_CONTROL, MOD_WIN]
def waitFor(self, key, modifiers):

# coerce to 0 if necessary
modifiers = modifiers or 0

id = self.getNextId()
hk = user32.RegisterHotKey(None, id, modifiers, key)
print "register hotkey: ",hk
if not hk:
print "Unable to register hotkey for key ", key
return False

print "registered id", id

try:
msg = wintypes.MSG()
while user32.GetMessageA(byref(msg), None, 0, 0) != 0:
print "got message",msg.message,"which is not",win32con.WM_HOTKEY
if msg.message == win32con.WM_HOTKEY:
print "got hotkey"
if msg.wParam == id:
print "found proper hotkey"
return True

user32.TranslateMessage(byref(msg))
user32.DispatchMessageA(byref(msg))
finally:
user32.UnregisterHotKey(None, id)

return False

SimpleKeyboardHook._id = 0

最佳答案

您一定要看看 user32 的 SetWindowsHookEx。这些函数允许您注册全局键盘 Hook 。 (只是不要忘记通过调用 CallNextHookEx 传递它们。)

链接:http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx

虽然我不知道如何从 python 做到这一点,抱歉。

关于python - 在 Windows 上,如何安装最低级别的全局键盘 Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6340149/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com