我在python中win32api.keybd_event有问题(见下面的脚本(:
在EN布局下,脚本按"q"键,然后按"1"键(似乎可以(。
在FR布局下,脚本按"q"键,然后按"&"键(而不是"a"和"&"(。
布局翻译是部分完成的看起来很奇怪。
以下是测试示例:
import win32api
import ctypes
import win32con
import time
def play(vk):
s = ctypes.windll.user32.MapVirtualKeyA(vk, 0)
win32api.keybd_event(vk, s, 0, 0)
time.sleep(0.1)
win32api.keybd_event(vk, s, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(0.7)
vk_key_Q = int('0x51', 16)
vk_key_1 = int('0x31', 16)
while True:
play(vk_key_Q)
play(vk_key_1)
感谢您的帮助!
我敢打赌你需要在Win32 API中传递TranslateMessage
。 根据 Windows 文档,仅触发键盘事件不会通过键盘布局映射事件;这需要与 TranslateMessage
分开完成,如果应用程序选择在如此低的级别工作,则需要明确执行。 我不确定win32api
是否有这种方法,但四处阅读,看起来win32gui
确实如此。