我试图让 SendKeysCtypes 在py2.7 和 win7 64bit上工作。 这是src
问题:
运行SendKeysCtypes.py并没有任何反应。测试应该打开记事本并写一些文本。
问题代码是这样的:
def GetInput(self):
"Build the INPUT structure for the action"
actions = 1
# if both up and down
if self.up and self.down:
actions = 2
inputs = (INPUT * actions)()
vk, scan, flags = self._get_key_info()
for inp in inputs:
inp.type = INPUT_KEYBOARD
inp._.ki.wVk = vk
inp._.ki.wScan = scan
inp._.ki.dwFlags |= flags
# if we are releasing - then let it up
if self.up:
inputs[-1]._.ki.dwFlags |= KEYEVENTF_KEYUP
return inputs
def Run(self):
"Execute the action"
inputs = self.GetInput()
return SendInput(
len(inputs),
ctypes.byref(inputs),
ctypes.sizeof(INPUT))
上面代码中的 SendInput() 什么都不做。
其他测试
我尝试了这个答案中的代码,它工作正常。但是这段代码还有其他一些问题。
根据作者的说法,它应该与 py3.1 一起使用
SendInput() 返回 '0',这意味着“被另一个线程阻塞”
调用 ctypes.GetLastError() 会给我们错误代码 87,这意味着“ERROR_INVALID_PARAMETER”
在这里我们被卡住了,因为我的 Windows 编程非常有限,任何人都可以对此有所了解吗?
编辑1:
- 按照“64 位是问题”跟踪,引导我到这个SO 问题,看看我是否可以转换它。