Python Ctypes 键盘事件

标签 python winapi keyboard ctypes pywin32

我有一些Python 2.7代码如下:

import ctypes

ctypes.windll.user32.keybd_event(0xA5, 0, 0, 0) # Right Menu Key
ctypes.windll.user32.keybd_event(0x73, 0, 0, 0) # F4

ctypes.windll.user32.keybd_event(0x0D, 0, 0, 0) #Enter Key

每当我运行代码时,即使我关闭了 Python,我的计算机也会出现错误。似乎总是按下 alt 键。如果我手动按 alt 键,此操作就会停止。

另一件事是此代码旨在关闭 shell。它仅适用于右侧菜单键代码,不适用于 alt 键代码或左侧菜单键代码。 (我知道还有其他方法可以关闭 shell,但这会关闭任何内容。)

这是我想知道的:

  1. 为什么要按住 alt 键?
  2. 如何在代码中停止这种情况?
  3. 为什么此功能不适用于 alt 键代码或左侧菜单键代码?

提前感谢任何提供帮助的人。

最佳答案

我不知道您是否仍在寻找答案,但我相信问题在于您没有模拟按键向上命令。添加下面的三行代码应该能够模拟您正在寻找的内容。

对于下面的代码,我假设您需要按顺序(即按右侧菜单键,按 F4 键,然后按 Enter)。但是,如果您想按住它(如 Shift + 'a' 的情况),您将调用两个按键事件,然后调用两个按键事件。

import ctypes

ctypes.windll.user32.keybd_event(0xA5, 0, 0, 0) # Right Menu Key Down
ctypes.windll.user32.keybd_event(0xA5, 0, 0x0002, 0) # Right Menu Key Up
ctypes.windll.user32.keybd_event(0x73, 0, 0, 0) # F4 Down
ctypes.windll.user32.keybd_event(0x73, 0, 0x0002, 0) # F4 Up
ctypes.windll.user32.keybd_event(0x0D, 0, 0, 0) #Enter Key Down
ctypes.windll.user32.keybd_event(0x0D, 0, 0x0002, 0) #Enter Key Up

关于Python Ctypes 键盘事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43724561/

相关文章:

python - 如何解决 python 网页抓取中的此错误?

python - 回调函数中的 ctypes POINTER(c_void_p)

python - 使用python读取和提取csv文件列

javascript - Javascript函数的解释

android - 键盘上方的下一个、上一个、完成按钮

iOS UIToolBar 隐藏在键盘上

python - 仅从电子邮件中检索新消息

c++ - 列表框选择事件(LBN_SELCHANGE 和 LBN_DBLCLK)未触发

C win32 应用程序可以编译和链接,但除了进程之外什么也不显示给我。为什么?

c++ - 我可以使用现有的项目代码在 C++ 中创建一个窗口吗