Ключевые нажатия в Python - PullRequest
       29

Ключевые нажатия в Python

22 голосов
/ 26 сентября 2008

Можно ли заставить систему показывать, что клавиша была нажата, например, мне нужно, чтобы клавиша A нажималась тысячи раз, и это занимает много времени, чтобы сделать это вручную Я хотел бы написать что-нибудь, чтобы сделать это для меня, и единственное, что я знаю достаточно хорошо, это Python.

Лучше сказать, мне нужно эмулировать нажатие клавиши, т.е. не захватить нажатие клавиши.

Дополнительная информация (по запросу): Я использую Windows XP и мне нужно отправить ключи другому приложению.

Ответы [ 6 ]

24 голосов
/ 26 сентября 2008

Установите расширения 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}")
18 голосов
/ 21 октября 2015

Вы также можете использовать 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")
10 голосов
/ 26 сентября 2008

AutoHotKey идеально подходит для таких задач (автоматизация / переназначение клавиатуры)

Скрипт для отправки "А" 100 раз:

Send {A 100}

Вот и все

РЕДАКТИРОВАТЬ : для отправки ключей в определенное приложение:

WinActivate Word
Send {A 100}
6 голосов
/ 26 июня 2017

Проверьте этот модуль клавиатура со многими функциями. Установите его, возможно, с помощью этой команды:

pip3 install keyboard

Тогда используйте этот код:

import keyboard
keyboard.write('A',delay=0)

Если вы хотите написать «А» несколько раз, тогда просто используйте цикл.
Примечание
Клавиша «А» будет нажата для всех окон. Значит, скрипт работает, и вы перешли в браузер, скрипт начнет писать там.

2 голосов
/ 15 августа 2009

Альтернативный способ установить предпочтительное окно на передний план перед отправкой события нажатия клавиши.

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)
2 голосов
/ 26 сентября 2008

Если вы используете платформу Windows, я бы не стал рекомендовать Python. Вместо этого посмотрите на Autohotkey . Поверьте мне, я люблю Python, но в этих условиях макропрограмма является идеальным инструментом для работы. Сценарии Autohotkey только приличны (на мой взгляд), но простота имитации ввода сэкономит вам бесчисленные часы. Скрипты AutoHotkey также могут быть «скомпилированы», поэтому вам не понадобится интерпретатор для запуска скрипта.

Кроме того, если это для чего-то в Интернете, я рекомендую iMacros . Это плагин Firefox и, следовательно, имеет гораздо лучшую интеграцию с веб-сайтами. Например, вы можете сказать «написать 1000 'a в этой форме» вместо «имитировать щелчок мышью в (319 400) и затем нажать« a' 1000 раз ».

Для Linux я, к сожалению, не смог найти хороший способ легко создавать макросы клавиатуры / мыши.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...