【发布时间】:2016-03-07 20:00:05
【问题描述】:
我在使用 ALT 键的 win32api keybd_event 时遇到了一些问题。我正在自动化一个需要我按 ALT-r 打开菜单的过程。唯一的问题是,一旦按下 ALT-r,ALT 键就不会释放,因此所有后续操作都会像按住 alt 键一样发生。我按以下顺序使用 KeyDown 和 KeyUp:
KeyDown(18)
KeyDown(82)
KeyUp(82)
KeyUp(18)
这应该做 ALT 按下,r 按下,r 释放,ALT 释放。但是,ALT 从不释放。我已经尝试了上述顺序的所有组合,我尝试将 timer.sleep() 放在每行之间,我尝试再次点击 KeyUp(18),我尝试使用 0x12 等而不是 18,我也尝试不按下 ALT全部。没有任何效果。
奇怪的是,在我的程序运行后,他的 ALT 键仍然卡住,修复它的唯一方法是在我的键盘上按右 alt。右 ATL 和左 ALT 在 win32api(18 或 0x12)中都有相同的名称,所以我不能让我的程序模拟这种行为。我觉得我已经用尽了所有的想法,有人有什么建议吗?
【问题讨论】:
-
如果您需要自动化 GUI,请使用 UI Automation。伪造输入很难有好的结果。
-
你应该首先关注你的窗口!然后发送你的热键....