如何使用Python模拟字符串键盘输入?

时间:2014-02-08 04:02:33

标签: python windows winapi python-2.7 pywin32

我正在使用Windows 8并拥有windows api模块

我正在尝试创建一个方法:

TypeInput(argument) #argument is a string

目标是如果参数是字符串,我的方法会模拟参数的类型。

不幸的是,

我目前使用以下方式模拟打字:

win32api.keybd_event(win32con.KEYCODE, MS KEYCODE, 0, 0)

我不知道如何抽象这个以便我可以插入任意字符。

我最初的猜测是进行unicode次转化

但似乎问题更严重,例如

ord('f') = 102 = 66 in hex

但是'f'的Windows代码是

0x046

和46不是66 ......

所以我不确定他们是如何转换的,它似乎没有相同的间隔。

此时我已经得出结论,有一种更优雅的方式来做到这一点。

有人会这么棒,向我展示并解释一下吗?

1 个答案:

答案 0 :(得分:2)

您希望使用SendInput而不是keybd_event,并确保KEYBDINPUT.dwFlags字段设置了KEYEVENTF_UNICODE标记。如果您没有使用KEYEVENTF_UNICODE,那么您必须确保将扫描代码都设置为密钥代码;否则你会得到特定于应用程序的失败。

SendInput有一个Python wrapper,所以这也有帮助。