Подтвердить что ты не робот

Ключевые прессы в Python

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

Лучший способ выразить это, мне нужно подражать нажатию клавиши, I.E. не захватывать нажатие клавиши.

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

4b9b3361

Ответ 1

Установите расширения 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}")

Ответ 2

Вы также можете использовать 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")

Ответ 3

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

Script отправить "A" 100 раз:

Send {A 100}

Что все

EDIT: отправить ключи в конкретное приложение:

WinActivate Word
Send {A 100}

Ответ 4

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

pip3 install keyboard

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

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

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

Ответ 5

Возможно, это возможно - но где вы хотите, чтобы нажатие клавиши продолжалось? В другое приложение? Вероятно, это будет случай понимания вашего инструментария для создания окон платформы и отправки правильных сообщений в нужное окно.

Уточните свои требования, и я уверен, что мы можем помочь.

Ответ 6

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

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

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

Ответ 7

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

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