添加其他文本时,Python win32api事件不会释放键

时间:2016-03-19 18:01:54

标签: python windows winapi windows-10

主要编辑大大缩小了复制范围

我在使用Windows 10中的win32api keybd_event在Python中使用shift时遇到问题。

我希望能够按下班次,然后按键换班。

以下文件完全符合预期。按下班次,然后释放班次。 (160是左移的关键代码)

import time
import win32con
import win32api
from win32api import keybd_event, mouse_event

time.sleep(3)
keybd_event(160, 0, 1, 0)
time.sleep(1)
keybd_event(160, 0, 2, 0)
time.sleep(1)

但是,当我将以下内容添加到结尾时,对于程序的其余部分以及程序执行之后,shift保持按键,直到更改活动窗口。 (84是t)的关键代码

keybd_event(84, 0, 1, 0)
time.sleep(1)
keybd_event(84, 0, 2, 0)
time.sleep(1)

这是一个简单的方法,因为我可以在删除所有抽象的情况下复制该问题。这严重破坏了我正在努力做的事情,我无法取得进展。

当其他键盘操作发生时,为什么键盘不起作用?

更新

传入bScan密钥代码会产生与代码低于

相同的行为
time.sleep(3)
keybd_event(160, 0x10, 1, 0)
time.sleep(1)
keybd_event(160, 0x10, 2, 0)
time.sleep(1)

keybd_event(84, 0x54, 1, 0)
time.sleep(1)
keybd_event(84, 0x54, 2, 0)
time.sleep(1)

1 个答案:

答案 0 :(得分:0)

我找到了以下作品。不确定为什么,会接受包含解释的答案会有用,或者链接到这些函数的文档。

import time
import win32con
import win32api
from win32api import keybd_event, mouse_event

time.sleep(3)
keybd_event(160, 0, 1, 0)
time.sleep(1)

keybd_event(160, 0, win32con.KEYEVENTF_EXTENDEDKEY  | 
win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)

keybd_event(84, 0, 1, 0)
time.sleep(1)
keybd_event(84, 0, win32con.KEYEVENTF_EXTENDEDKEY  | 
win32con.KEYEVENTF_KEYUP, 0)
time.sleep(1)