Python中的按键

时间:2020-03-06 14:45:20  来源:igfitidea点击:

是否有可能使系统似乎已按下某个键,例如,我需要使" A"键被按下数千次,而手动完成它很费时间,我想写点东西为我做这件事,而我所知道的唯一的就是Python。

更好的表达方式是,我需要模拟一个按键,即无法捕获按键。

更多信息(按要求):
我正在运行Windows XP,需要将密钥发送到另一个应用程序。

解决方案

这可能是可行的,但是我们希望按键在哪里呢?到另一个应用程序?这可能是了解平台的窗口工具箱并将正确的消息发送到正确的窗口的情况。

弄清要求,我相信我们可以为我们提供帮助。

AutoHotKey非常适合此类任务(键盘自动化/重新映射)

脚本发送" A" 100次:

Send {A 100}

就这样

编辑:将密钥发送到特定的应用程序:

WinActivate Word
Send {A 100}

安装pywin32扩展。然后,我们可以执行以下操作:

import win32com.client as comclt
wsh= comclt.Dispatch("WScript.Shell")
wsh.AppActivate("Notepad") # select another application
wsh.SendKeys("a") # send the keys you want

搜索WScript.Shell对象的文档(我相信所有Windows XP安装中都默认安装了该文档)。也许我们可以从这里开始。

编辑:发送F11

import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")

# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")

如果我们使用的平台是Windows,那么我实际上不建议我们使用Python。相反,请查看Autohotkey。相信我,我喜欢Python,但是在这种情况下,宏程序是完成这项工作的理想工具。 Autohotkey的脚本编写不错(我认为),但是模拟输入的便捷性将为我们节省大量时间。 Autohotkey脚本也可以被"编译",因此我们不需要解释器来运行脚本。

另外,如果这是针对Web的,则建议使用iMacros。这是一个firefox插件,因此与网站的集成度更高。例如,我们可以说"以这种形式编写1000个'a'",而不是"模拟在(319,400)处的鼠标单击,然后按1000次'a'"。

不幸的是,对于Linux,我找不到能够轻松创建键盘/鼠标宏的好方法。

在发送按键事件之前将首选窗口设置为前台的另一种方法。

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)