2016-03-26 26 views
2

Ich benutze Subprozess, um eine Datei mit seinem Standardprogramm zu öffnen und Tastenanschläge zu senden, mit pyautogui Bibliothek.Generieren warten, bis eine Anwendung geöffnet

Mein Problem ist, wenn Sie eine Datei öffnen, braucht es Zeit, um es in seinem Standardprogramm zu öffnen, und natürlich variiert die Zeitspanne für verschiedene Dateien.

Also, wie kann ich eine Pause in meinem Skript erzeugen, so dass die Datei zuerst geöffnet werden muss und Tastenanschläge an es gesendet werden.

Hinweis: sleep() Funktion ist nicht das, was ich erwarte. Ich brauche eine Art Asynchronisierung zwischen der Anwendung und meinem Skript.

from subprocess import Popen 
from sys import argv 
from pyautogui import press,hotkey 

if len(argv)>0: 

    word = Popen(['start',argv[1]],shell=True) 
    press("f12") 
    press("tab") 
    press("right") 
    for i in range(5): press("down") 
    press("enter") 
    hotkey("alt","f4") 
    word = None 

    pdf = Popen(["C:\Program Files\Nitro\Pro 9\NitroPDF.exe",argv[1]]) 
    hotkey("ctrl","shift","i") 
    press("enter") 
    hotkey("alt","f4") 

Ich erstelle ein Programm ein Word-Dokument zu öffnen und Tastatureingaben an sie zu senden, um es als pdf speichern. Sie öffne ich einen anderen pdf-Herausgeber, um Bild von ihm zu exportieren.

Antwort

0

Sie könnten Popen.wait() für diesen Zweck verwenden. Es wartet darauf, dass der Child-Prozess beendet wird.

+0

aber es wird mein Skript pausieren, bis die Anwendung gestartet wird geschlossen. Wie kann ich Tastenanschläge senden? –