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.

È stato utile?

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 :
 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top