Python在Windows上发送按键

1 投票
3 回答
12263 浏览
提问于 2025-04-16 22:21

我正在尝试在Windows机器上通过Python 2.7发送键盘命令。我知道SendKeys模块在2.7上无法使用,所以我改用win32 API中的keybd_event。

我想发送的按键是shift+左箭头,用来选择一个单词。以下是代码:

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键松开的办法是先按一下大写锁定键,然后再按shift加一个键,最后再按一下大写锁定键关掉。这跟这个问题很相似:http://www.bigresource.com/Tracker/Track-vb-RvVMlrAbZn/

你有什么建议吗?

提前谢谢你!

3 个回答

-1

你可以试试这个叫做 pywin32 的工具包,不过要注意,它比较旧而且没有人维护了。

这里有一个来自 StackOverflow 的例子

-1

虽然我找不到让win32api和shift一起工作的办法,但我现在正在使用来自http://code.google.com/p/sendkeys-ctypes/的SendKeys,它似乎在2.7版本中可以正常工作。

-1

Windows的API中的SendInput功能可能会很有用。最近Raymond Chen的博客提到,你甚至可以用它来控制屏幕保护程序的开始和停止。

撰写回答