2008-09-25 6 views
16

Est-il possible de faire apparaître à un système qu'une touche a été pressée, par exemple je dois faire une touche être pressée des milliers de fois, et il est beaucoup trop long de le faire manuellement , Je voudrais écrire quelque chose pour le faire pour moi, et la seule chose que je connais bien est Python.Presses clés en Python

Une meilleure façon de le mettre, je dois émuler une touche de presse, I.E. pas capturer une touche.

Plus d'informations (comme demandé): Je cours sous Windows XP et j'ai besoin d'envoyer les clés à une autre application.

Répondre

21

Installez les extensions pywin32. Ensuite, vous pouvez effectuer les opérations suivantes:

import win32com.client as comclt 
wsh= comclt.Dispatch("WScript.Shell") 
wsh.AppActivate("Notepad") # select another application 
wsh.SendKeys("a") # send the keys you want 

Rechercher la documentation de l'objet WScript.Shell (je crois installé par défaut dans toutes les installations de Windows XP). Vous pouvez commencer here, peut-être.

EDIT: Envoi F11

import win32com.client as comctl 
wsh = comctl.Dispatch("WScript.Shell") 

# Google Chrome window title 
wsh.AppActivate("icanhazip.com") 
wsh.SendKeys("{F11}") 
2

C'est probablement possible - mais où voulez-vous que les touches enfoncent? Pour une autre application? Ce serait probablement un cas de comprendre la boîte à outils de fenêtrage de votre plate-forme et d'envoyer les bons messages à la bonne fenêtre.

Clarifiez vos besoins, et je suis sûr que nous pouvons vous aider.

8

AutoHotKey est parfait pour ce genre de tâches (automatisation clavier/remappage)

Script envoyer "A" 100 fois:

Send {A 100} 

C'est tout

EDIT: pour envoyer les clés d'une application spécifique:

WinActivate Word 
Send {A 100} 
+2

Cela fonctionne, mais ne répond pas à la question, je vais donc voter, mais je ne peux pas l'accepter comme réponse. – UnkwnTech

1

Si vous êtes plate-forme est Windows, je ne recommanderais pas vraiment Python. Au lieu de cela, regardez dans Autohotkey. Croyez-moi, j'aime Python, mais dans ce cas, un programme macro est l'outil idéal pour le travail. Les scripts d'Autohotkey ne sont que décents (à mon avis), mais la facilité de simuler des entrées vous permettra d'économiser d'innombrables heures. Les scripts Autohotkey peuvent également être "compilés", vous n'avez donc pas besoin de l'interpréteur pour exécuter le script.

Aussi, si c'est pour quelque chose sur le Web, je recommande iMacros. C'est un plugin firefox et a donc une bien meilleure intégration avec les sites web. Par exemple, vous pouvez écrire «écrire 1000 'dans cette forme» au lieu de «simuler un clic de souris à (319 400) puis appuyer sur« a »1000 fois».

Pour Linux, je n'ai malheureusement pas réussi à trouver un bon moyen de créer facilement des macros clavier/souris.

1

Autre manière de définir la fenêtre préférée en avant-plan avant l'envoi d'une touche.

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

Vous pouvez également utiliser PyAutoGui pour envoyer une touche virtuelle.

est ici la documentation: https://pyautogui.readthedocs.org/en/latest/

import pyautogui 


pyautogui.press('Any key combination') 

Vous pouvez également envoyer des touches comme la touche Maj ou la touche Entrée avec:

import pyautogui 

pyautogui.press('shift') 

Pyautogui peut également envoyer des messages texte directement comme ceci:

import pyautogui 

pyautogui.typewrite('any text you want to type') 

Comme pour appuyer sur la touche "A" 1000 fois, il semblerait quelque chose li ke ceci:

import pyautogui 

for i in range(999): 
    pyautogui.press("a") 

alt-tab ou d'autres tâches qui nécessitent plus d'une touche à presser en même temps:

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") 
+1

Génial, exactement ce dont j'avais besoin ... et ça permet aussi de capturer des captures d'écran. –

2

Vérifier Ce module keyboard avec beaucoup features.Install, peut-être avec cette commande:

pip3 install keyboard 

Ensuite Utilisez ce code:

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

Si vous voulez écrire 'A' plusieurs fois, utilisez simplement une boucle.
Remarque:
La touche « A » sera appuyé pour l'ensemble windows.Means le script est en cours d'exécution et que vous êtes allé au navigateur, le script commencer à écrire là.

+0

Y at-il un moyen d'utiliser cette bibliothèque pour appuyer et maintenir la touche pendant un certain nombre de secondes. Je ne veux pas de multiples touches, juste une jusqu'à sa sortie. J'ai regardé à travers les documents de l'API et ne peux pas trouver exactement ce que je cherche - beaucoup de choses avec des combinaisons de boutons. – thomascrha