【发布时间】:2011-10-14 04:46:44
【问题描述】:
我正在尝试在 Windows 机器上通过 python 2.7 发送键盘命令。我了解 SendKeys 模块不适用于 2.7。所以我改用 win32 api 中的 keybd_event 。
我要发送的键是 shift+left 来选择一个单词。这是代码:
win32api.keybd_event(win32con.VK_LSHIFT,0,win32con.KEYEVENTF_EXTENDEDKEY | 0,0)
win32api.keybd_event(win32con.VK_LEFT,0,0,0)
win32api.keybd_event(win32con.VK_LSHIFT,0,win32con.KEYEVENTF_EXTENDEDKEY | win32con.KEYEVENTF_KEYUP,0)
这一切都有效。但是,shift键一直被按下!即使在我终止进程之后。之后释放 shift 键的唯一方法是物理按下大写锁定,然后按 shift + a 键,然后关闭大写锁定。它与这个问题非常相似:http://www.bigresource.com/Tracker/Track-vb-RvVMlrAbZn/
你知道该怎么做吗?
提前致谢!
【问题讨论】:
-
我猜测这是因为您将 0 作为扫描码(第二个参数)传递。尝试调用
scanCode = MapVirtualKey(VK_LSHIFT, MAPVK_VK_TO_VSC)并将其传递给 keybd_event 方法。 -
感谢您的回复。我刚刚尝试过:scanCode = win32api.MapVirtualKey(win32con.VK_LSHIFT, 0) 我在那里设置了一个零,因为我找不到 MAPVK_VK_TO_VSC。但是,不幸的是它仍然无法正常工作。
-
调用后scanCode中的值是多少?