python - 如何使用 pywin32 模拟按住

标签 python key send pywin32 win32com

我正在尝试编写一个Python脚本来发送按住键信号。现在我所能做的就是以下几点:

import win32com.client
shell = win32com.client.Dispatch("Wscript.Shell")
shell.SendKeys("z")

但是,这仅发送瞬时按键事件。我想做的是按一下键然后向上按一下键,大致如下:

shell.SendKeys("z{down}")
time.sleep(.25) 
shell.SendKeys("z{up}")

但我找不到任何有记录的方法来实现这一点。

编辑:我也尝试了类似的方法:

import time
import win32com.client
import win32api
import win32gui
import win32con

time.sleep(2)
shell = win32com.client.Dispatch("Wscript.Shell")
win32api.SendMessage(win32con.HWND_TOP, win32con.WM_CHAR, 90, 0) 
win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_KEYDOWN, 90, 1) 
time.sleep(.25)
win32api.SendMessage(win32con.HWND_BROADCAST, win32con.WM_KEYUP, 90, 1) 

整个 HWND 事情对我来说确实是一个谜 - 从文档中我无法弄清楚如何获取正确的窗口。另外,WM_CHAR 似乎可以工作,但 WM_KEYDOWN/KEYUP 并没有真正执行任何操作。

最佳答案

您可以使用win32api.PostMessage发送WM_KEYDOWNWM_KEYUP消息。有关参数的文档,请参阅 MSDN。这些常量在 win32con 模块中定义。

关于python - 如何使用 pywin32 模拟按住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9271761/

相关文章:

python - Pandas pd.Series.isin的性能与数组和数组的关系

python - 对称一维数组 Python

javascript - 我可以使用另一个 _.get 作为 lodash _.get 的默认值吗?

c - 如何知道 send() 或 sendmsg() 成功发送消息?

PHP mail() 电子邮件地址与发送的电子邮件不同

python - 生成带日期的随机时间序列数据

python - Outlook RestAPI 无法正常工作

git - 如何使用本地ssh key访问第三台电脑?

php - 如何将两个数组组合在一起?

C套接字,recv丢失数据