Hallo an die HCL- / (Lotus-) Gemeinde,
ich muss einen alten Thread von mir wieder aufnehmen, weil das Thema inzwischen wieder aktuell geworden ist:
https://atnotes.de/index.php/topic,63265.msg403580.htmlIch will ein externes Programm aufrufen (PDF24-DocTool.exe), das PDF-Dateien, die sich in einem Verzeichnis befinden, zu einer PDF-Datei zusammenfasst, die ich dann per Mail weiterverschicke. Tode hat mich dankenswerterweise in dem Thread auf den Befehlt ShellExecute verwiesen, mit dem Hinweis, dass LS mit der Abarbeitung des Codes erst weitemacht, wenn das aufgerufene Programm beendet ist.
Leider ist dem nicht so, wie ich jetzt fesstellen musste. Es stimmt, dass das aufgerufene Programm einen Wert zurück gibt, aber wenn der Aufruf erfolgreich war und das externe Programm gestartet ist, läuft LS fröhlich weiter und verhakt sich dann irgendwann wegen Mehrfach-Aufrufen und der Löschung von Dateien in den Dokumentenverzeichnissen.
Hat der ShellExecute einen Parameter oder abfragbaren Rückgabewert, der LS anweisen könnte, auf die Beendigung (!) des aufgerufenen Programms zu warten?
Oder muss ich doch irgendwie Windows-Handler abfragen (keine Ahnung, wie), die feststellen, ob ein Programmfenster noch existiert?
Beim Vorschlag im Thread von tfrenz, eine Batchdatei laufen zu lassen, weiß ich nicht, wie ich den erwähnten "start /wait prog.exe"-Befehl aufrufen soll. Als Shell-Befehl? Und hielte der das LS an?
Ansonsten bliebe mir nur übrig zu versuchen, eine Warte-Schleife zu programmieren, die so lange läuft, bis die Ausgabedatei vorhanden ist. Dumm nur, wenn die gleich vom PDF24-Programm angelegt wird (mit Größe = 0 Byte) und erst im Nachhinein gefüllt wird. Dann ginge nur, die Dateigröße zu prüfen, aber ob ich an die herankomme...
Grüße
Frank