Question

Est-il possible de faire croire à un système qu'une touche a été enfoncée; par exemple, il faut que la touche A soit actionnée des milliers de fois, et cela prend beaucoup de temps à le faire manuellement, j'aimerais écrire quelque chose pour le faire pour moi, et la seule chose que je connais assez bien est Python.

Une meilleure façon de le dire, je dois émuler une pression sur une touche, I.E. pas capturer une touche.

Plus d'infos (sur demande): J'utilise Windows XP et dois envoyer les clés à une autre application.

Était-ce utile?

La solution

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

Recherchez la documentation de l'objet WScript.Shell (installé par défaut dans toutes les installations Windows XP). Vous pouvez démarrer ici , peut-être.

EDIT: Envoi du F11

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

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

Autres conseils

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

Voici la documentation: https://pyautogui.readthedocs.org/en/latest/

import pyautogui


pyautogui.press('Any key combination')

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

import pyautogui

pyautogui.press('shift')

Pyautogui peut également envoyer du texte tel quel:

import pyautogui

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

Comme pour appuyer sur le bouton "A" clé 1000 fois, cela ressemblerait à quelque chose comme ça:

import pyautogui

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

Alt-Tab ou d'autres tâches nécessitant d'appuyer simultanément sur plusieurs touches:

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 est parfait pour ce type de tâches (automatisation / remappage du clavier)

Script à envoyer " A " 100 fois:

Send {A 100}

C'est tout

MODIFIER : pour envoyer les clés à une application spécifique:

WinActivate Word
Send {A 100}

Cochez ce module clavier doté de nombreuses fonctionnalités.Installez-le, 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 enfoncée pour l'ensemble de la fenêtre. Cela signifie que le script est en cours d'exécution et que vous êtes allé au navigateur. Le script commencera à écrire à cet endroit.

Si votre plate-forme est Windows, je ne recommanderais pas réellement Python. Recherchez plutôt Autohotkey . Croyez-moi, j'aime Python, mais dans ce cas, un programme macro est l'outil idéal pour ce travail. Les scripts d'Autohotkey ne sont que corrects (à mon avis), mais la facilité de simulation des entrées vous fera gagner un nombre incalculable d'heures. Les scripts Autohotkey peuvent être "compilés". de même si vous n'avez pas besoin de l'interprète pour exécuter le script.

De même, si cela concerne quelque chose sur le Web, je vous recommande de iMacros . C'est un plugin firefox et a donc une intégration bien meilleure avec les sites web. Par exemple, vous pouvez dire "écrivez 1000 'a sous cette forme" au lieu de "simuler un clic de souris à (319 400)", puis appuyez sur "a" 1 000 fois ".

Pour Linux, je n’ai malheureusement pas trouvé le moyen de créer facilement des macros clavier / souris.

Autre moyen de définir la fenêtre préférée au premier plan avant l’événement d’envoi de la touche d’envoi.

hwnd = win32gui.FindWindowEx(0,0,0, "App title")
win32gui.SetForegroundWindow(hwnd)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top