Ключевые нажатия в Python
Можно ли заставить систему показывать, что клавиша была нажата, например, мне нужно, чтобы клавиша нажималась тысячи раз, и это требует много времени, чтобы сделать это вручную, я хотел бы написать что-нибудь сделать это для меня, и единственное, что я знаю достаточно хорошо, это Python.
Чтобы лучше выразиться, мне нужно эмулировать нажатие клавиши, т.е. IE не фиксирует нажатие клавиши.
Дополнительная информация (по запросу): Я использую Windows XP и мне необходимо отправить ключи другому приложению.
12 ответов
Установите расширения 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 или клавишу ввода, используя:
import pyautogui
pyautogui.press('shift')
Pyautogui также может отправлять прямой текст, например, так:
import pyautogui
pyautogui.typewrite('any text you want to type')
Что касается нажатия клавиши "А" 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")
Проверьте этот модуль клавиатуры со многими функциями. Установите его, возможно, с помощью этой команды:
pip3 install keyboard
Затем используйте этот код:
import keyboard
keyboard.write('A',delay=0)
Если вы хотите написать "А" несколько раз, тогда просто используйте цикл.
Примечание:
Клавиша "А" будет нажата для всех окон. Значит, скрипт работает, и вы перешли в браузер, скрипт начнет писать там.
AutoHotKey идеально подходит для такого рода задач (автоматизация / переназначение клавиатуры)
Скрипт для отправки "А" 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)
Если вы используете платформу Windows, я бы не рекомендовал Python. Вместо этого посмотрите в Autohotkey. Поверьте мне, я люблю Python, но в этих условиях макропрограмма является идеальным инструментом для работы. Сценарии Autohotkey только приличны (на мой взгляд), но простота имитации ввода сэкономит вам бесчисленные часы. Скрипты AutoHotkey также могут быть "скомпилированы", поэтому вам не понадобится интерпретатор для запуска скрипта.
Кроме того, если это для чего-то в Интернете, я рекомендую iMacros. Это плагин Firefox и, следовательно, имеет гораздо лучшую интеграцию с веб-сайтами. Например, вы можете сказать "написать 1000 'a в этой форме" вместо "имитировать щелчок мышью в (319 400) и затем нажать" a' 1000 раз ".
Для Linux я, к сожалению, не смог найти хороший способ легко создавать макросы клавиатуры / мыши.
Возможно, это возможно, но куда вы хотите, чтобы нажимали клавиши? В другое приложение? Вероятно, это было бы в случае понимания оконного инструментария вашей платформы и отправки правильных сообщений в нужное окно.
Уточните ваши требования, и я уверен, что мы можем помочь.
Решение есть:
import pyautogui
for i in range(1000):
pyautogui.typewrite("a")
Вы можете использовать этот код, который я написал, который будет нажимать клавишу «a» 1000 раз.
import pyautogui
loop = 1
while loop <= 1000:
pyautogui.press("a")
loop += 1
Вы можете использовать модуль pyautogui, который можно использовать для автоматического перемещения мыши и нажатия клавиши. Его также можно использовать для некоторого графического интерфейса (очень простого). Вы можете сделать следующее: - import pyautogui pyautogui.press ('A') # нажимает клавишу 'A'
Если вы хотите сделать это 1000 раз, вы можете использовать цикл while
Надеюсь, это будет полезно :)