有没有可能让系统看到一个按键被按下,例如我需要按下A按键数千次,手动操作非常耗时,我想编写一些程序来代替我的操作,而我唯一熟练的工具是Python。
更准确地说,我需要模拟按键按下,即不是捕获按键按下。
更多信息(如所请求): 我正在运行Windows XP,并需要将这些按键发送到另一个应用程序。
安装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}")
你也可以使用PyAutoGui来发送虚拟按键。
这里是文档:https://pyautogui.readthedocs.org/en/latest/
import pyautogui
pyautogui.press('Any key combination')
您还可以使用以下代码发送键盘按键,例如Shift键或Enter键:
import pyautogui
pyautogui.press('shift')
pyautogui还可以直接发送文本,像这样:
import pyautogui
pyautogui.typewrite('any text you want to type')
如果按下"A"键1000次,它会看起来像这样:
import pyautogui
for i in range(999):
pyautogui.press("a")
使用alt-tab或其他需要同时按下多个按键的任务:
import pyautogui
# Holds down the alt key
pyautogui.keyDown("alt")
# Presses the tab key once
pyautogui.press("tab")
# Lets go of the alt key
pyautogui.keyUp("alt")
pyobjc
,它有大量的依赖项。在安装时请注意。 - numbermaniac检查这个带有许多功能的键盘模块。安装它,可以使用以下命令:
pip3 install keyboard
然后使用这段代码:
import keyboard
keyboard.write('A',delay=0)
keyboard.press(hotkey)
是怎样的呢?它可以"按下并按住一个热键",请参见:https://github.com/boppreh/keyboard#keyboardpresshotkey - dpatAutoHotKey非常适合这种任务(键盘自动化/重新映射)。
发送"A"字符100次的脚本:
Send {A 100}
就这些。
编辑:将键发送给特定应用程序:
WinActivate Word
Send {A 100}
PyAutoGui还允许您多次按下按钮:
pyautogui.press('tab', presses=5) # press TAB five times in a row
pyautogui.press('A', presses=1000) # press A a thousand times in a row
在发送按键事件之前将首选窗口设置为前台的另一种方法。
hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)
import keyboard
keyboard.press_and_release('anykey')
有一个解决方案:
import pyautogui
for i in range(1000):
pyautogui.typewrite("a")