【问题标题】:Python win32api event shift not releasing key when other text is added添加其他文本时,Python win32api事件转移不释放键
【发布时间】:2016-07-06 10:29:59
【问题描述】:

重大修改大大缩小了复制范围

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

我希望能够在换档时按下键,然后在换档时按下键。

以下文件完全按预期工作。它按下shift,然后释放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)

【问题讨论】:

  • 您将KEYEVENTF_EXTENDEDKEY 传递给keybd_event,但没有提供bScan 参数。这背后的原因是什么?如果您尝试自动化 UI,您应该使用正确的方法来实现它:UI Automation.
  • 我通过EXTENDEDKEY ?我认为keybd_event(160, 0, 2, 0) 是关键。我对bScan不熟悉,我会调查一下。我使键盘和鼠标自动化的原因是因为它正在与一个外部程序交互,我不允许使用它的代码(星际争霸 2 机器人,使用条款禁止这样做)编辑:我在寻找lshift扫码。我找到了一张表,但 lshift 没有任何价值。
  • @IInspectable 我已经通过了 bScan 代码,但仍然收到相同的行为。
  • 为什么你在没有设置KEYEVENTF_EXTENDEDKEY标志的情况下为KEYEVENTF_KEYUP传递相同的扫描码?您需要彻底消化文档。键盘输入绝非微不足道。无论如何,我不太喜欢帮助作弊者作弊。您只需要希望得到其他人的帮助。
  • @IInspectable 这不是为了作弊。是给人工智能的。你能指出我的文档吗?我是蟒蛇的新手。这就是我找到的全部。 docs.activestate.com/activepython/2.4/pywin32/…

标签: python windows winapi windows-10


【解决方案1】:

我发现了以下作品。不知道为什么,会接受一个包含解释的答案,或者这些函数的文档链接。

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)

【讨论】:

    猜你喜欢
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    相关资源
    最近更新 更多