gpt4 book ai didi

python - 从如此生成的击键中阻止 pyhook?

转载 作者:可可西里 更新时间:2023-11-01 14:19:15 32 4
gpt4 key购买 nike

我正在使用 pyhookpyhk 来映射 Windows XP 机器上的击键,它工作正常,除非击键(例如,ctrl+z)已经存在于应用程序中。在这种情况下,ctrl+z 将传递给应用程序触发已映射到它的操作。

如果您熟悉 autohotkey,请注意 autohotkey 通过定义可以选择性地传递给底层应用程序的热键来解决这个问题。这里有一些代码可以理解这个想法。请注意,我正在尝试跟踪 ctrl 键何时按下。

  import pythoncom, pyHook
control_down = False

def OnKeyboardEvent_up(event):
global control_down
if event.Key=='Lcontrol' or event.Key=='Rcontrol':
control_down=False
return True

def OnKeyboardEvent(event,action=None,key='Z',context=None):
global control_down
if event.Key=='Lcontrol' or event.Key=='Rcontrol':
control_down=True
if control_down and event.Key==key:
print 'do something'
return False
if event.Key=='Pause':
win32gui.PostQuitMessage(1)
return False
# return True to pass the event to other handlers
return True

if __name__ == '__main__':
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.KeyUp = OnKeyboardEvent_up
hm.HookKeyboard() # set the hook
pythoncom.PumpMessages() # wait forever

感谢任何帮助。

谢谢!

最佳答案

如果您只对 Windows 感兴趣,您可以使用 win API,例如通过 ctypes:

>>> from ctypes import windll
>>> windll.user32.RegisterHotKey(0, -1, 0x0002, 0x5a)

运行这些代码行后 Ctrl (code = 0x0002) + Z (code = 0x5a)组合在 Python REPL 中不再有效。

所以你最好看看那些热键注册的窗口是什么。您可以在 MSDN 中找到更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/ms646309(v=vs.85).aspx

关于python - 从如此生成的击键中阻止 pyhook?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11658676/

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