Domanda
È possibile far apparire a un sistema che è stato premuto un tasto, ad esempio devo fare in modo che A venga premuto migliaia di volte, ed è molto dispendioso in termini di tempo farlo manualmente, vorrei scrivere qualcosa per farlo per me, e l'unica cosa che conosco abbastanza bene è Python.
Un modo migliore per dirlo, ho bisogno di emulare una pressione dei tasti, I.E. non acquisire la pressione di un tasto.
Ulteriori informazioni (come richiesto): Uso Windows XP e devo inviare le chiavi a un'altra applicazione.
Soluzione
Installa le estensioni pywin32 . Quindi è possibile effettuare le seguenti operazioni:
import win32com.client as comclt
wsh= comclt.Dispatch("WScript.Shell")
wsh.AppActivate("Notepad") # select another application
wsh.SendKeys("a") # send the keys you want
Cerca la documentazione dell'oggetto WScript.Shell (credo che sia installato di default in tutte le installazioni di Windows XP). Puoi iniziare qui , forse.
MODIFICA: Invio F11
import win32com.client as comctl
wsh = comctl.Dispatch("WScript.Shell")
# Google Chrome window title
wsh.AppActivate("icanhazip.com")
wsh.SendKeys("{F11}")
Altri suggerimenti
Puoi anche usare PyAutoGui per inviare un tasto virtuale.
Ecco la documentazione: https://pyautogui.readthedocs.org/en/latest/
import pyautogui
pyautogui.press('Any key combination')
Puoi anche inviare tasti come il tasto Maiusc o il tasto Invio con:
import pyautogui
pyautogui.press('shift')
Pyautogui può anche inviare un testo semplice in questo modo:
import pyautogui
pyautogui.typewrite('any text you want to type')
Per quanto riguarda la pressione di " A " chiave 1000 volte, sarebbe simile a questo:
import pyautogui
for i in range(999):
pyautogui.press("a")
alt-tab o altre attività che richiedono la pressione contemporanea di più di un tasto:
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")
AutoHotKey è perfetto per questo tipo di attività (automazione della tastiera / rimappatura)
Script per inviare " A " 100 volte:
Send {A 100}
Questo è tutto
MODIFICA : per inviare le chiavi a un'applicazione specifica:
WinActivate Word
Send {A 100}
Controlla questo modulo tastiera con molte funzioni. Installalo, forse con questo comando:
pip3 install keyboard
Quindi utilizzare questo codice:
import keyboard
keyboard.write('A',delay=0)
Se vuoi scrivere 'A' più volte, usa semplicemente un ciclo.
Nota ??em>:
Il tasto 'A' verrà premuto per l'intera finestra. Significa che lo script è in esecuzione e sei andato al browser, lo script inizierà a scrivere lì.
Se la tua piattaforma è Windows, in realtà non consiglierei Python. Invece, guarda in Autohotkey . Fidati di me, adoro Python, ma in questa circostanza un programma macro è lo strumento ideale per il lavoro. Lo scripting di Autohotkey è solo decente (secondo me), ma la facilità di simulazione dell'input ti farà risparmiare innumerevoli ore. Gli script Autohotkey possono essere "compilati" così non hai bisogno dell'interprete per eseguire lo script.
Inoltre, se questo è per qualcosa sul Web, raccomando iMacros . È un plug-in Firefox e quindi ha una migliore integrazione con i siti Web. Ad esempio, puoi dire " scrivi 1000 "a" in questo modulo " invece di " simula un clic del mouse su (319.400) e poi premi 'a' 1000 volte " ;.
Sfortunatamente per Linux non sono stato in grado di trovare un buon modo per creare facilmente macro tastiera / mouse.
Modo alternativo per impostare la finestra di preferenza in primo piano prima di inviare l'evento di pressione dei tasti.
hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)