我正在使用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 ......
所以我不确定他们是如何转换的,它似乎没有相同的间隔。
此时我已经得出结论,有一种更优雅的方式来做到这一点。
有人会这么棒,向我展示并解释一下吗?
答案 0 :(得分:2)
您希望使用SendInput
而不是keybd_event,并确保KEYBDINPUT.dwFlags
字段设置了KEYEVENTF_UNICODE
标记。如果您没有使用KEYEVENTF_UNICODE
,那么您必须确保将扫描代码和都设置为密钥代码;否则你会得到特定于应用程序的失败。
SendInput有一个Python wrapper,所以这也有帮助。