2008-11-16 9 views
10

Je veux automatiser plusieurs tâches (par exemple simuler le style éclipse ctrl -. changement - R dialogue ouvert pour d'autres éditeurs). Le modèle général est le suivant: l'utilisateur appuie sur une combinaison de touches, mon programme le détecte et affiche potentiellement une boîte de dialogue pour obtenir l'entrée de l'utilisateur, puis exécute une commande correspondante, généralement en exécutant un exécutable.Python pour le sniffing de combinaison de touches de style Autohotkey, automatisation?

Mon environnement cible est Windows, bien que la multiplateforme soit agréable. Mon programme démarre une seule fois, lit un fichier de configuration et reste en arrière-plan jusqu'à ce qu'il soit déclenché par une combinaison de touches ou un autre événement.

Fondamentalement autohotkey.

Pourquoi ne pas utiliser autohotkey? J'ai en fait quelques macros autohotkey, mais je préfère utiliser un langage plus sain.

Ma question est la suivante: y a-t-il une bonne façon d'avoir un processus en arrière-plan python pour détecter les combinaisons de touches?

Mise à jour: trouvé la réponse à l'aide pyHook et les extensions win32:

import pyHook 
import pythoncom 

def OnKeyboardEvent(event): 
    print event.Ascii 

hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 

while True: 
    pythoncom.PumpMessages() 

Répondre

5

a trouvé la réponse à l'aide pyHook et les extensions win32:

import pyHook 
import pythoncom 

def OnKeyboardEvent(event): 
    print event.Ascii 

hm = pyHook.HookManager() 
hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 

while True: 
    pythoncom.PumpMessages() 
7

Vous voudrez peut-être regarder AutoIt. Il fait tout ce que peut faire AutoHotKey, mais la syntaxe du langage ne vous donne pas envie de vous arracher les cheveux. Additonally, il a des liaisons COM de sorte que vous pouvez utiliser la plupart de ses capacités facilement en python si vous le souhaitez. J'ai posté sur la façon de le faire ici before.

Questions connexes