2010-09-10 5 views
2

Je n'ai pas pu trouver de solution pour Python.Exécuter une application externe et lui envoyer des événements clés

Je suis Abelt o lancer l'application (à l'aide subprocess.Popen ou subprocess.call), mais je ne peux pas trouver un moyen de faire l'autre partie:

Je veux envoyer une série de clés (type de macro) à l'application que je viens d'ouvrir. Comme:

Tab Tab Entrez Tab Tab Supprimer ...

est-il un moyen de faire ce qui est compatible Mac et PC? Ou, dans le cas non, seulement PC?

Merci pour votre aide, Basil

PS. Je sais qu'il existe des applications pour automatiser certains événements de clés, mais je veux créer la mienne.

Répondre

0

Exécutez la commande subprocess.Popen() avec l'argument stdin=subprocess.PIPE puis utiliser le fichier stdin de l'objet Popen pour écrire des données à flux d'entrée standard du processus. Pour certaines des commandes que vous avez mentionnées, les échappements de chaîne standard sont disponibles (comme '\ t' pour TAB). Cependant, si vous avez besoin d'un jeu de clés plus complet, vous devrez sortir une ancienne table ASCII et assembler les chaînes via la fonction chr().

p = subprocess.Popen(['bash',], stdin=subprocess.PIPE) 
p.stdin.write('echo "Hello\t\t\tWorld"\n') 
2

Sous Windows, vous pouvez utiliser le vénérable SendKeys pour le faire. Il y a quelques implémentations qui circulent. Un, en utilisant le win32 extentions ou deux, il y a même un couple prêt à l'emploi modulesavailable

0

Merci d'avoir répondu. J'ai essayé d'utiliser le sous-processus.Popen(), mais il semble que cela ne fonctionne pas. L'envoi de la chaîne '\ t' ne fonctionne pas ... Il ne fait simplement rien ... Notez que l'application n'est pas basée sur python (c'est une application d'installation - essentiellement, ils sont des fichiers zip auto-extractibles (.exe) et j'ai Je vais essayer l'autre idée avec quelques modules Windows ... mais je préférerais vraiment utiliser quelque chose compatible Mac et PC ...

Questions connexes