Axel Richter: gestarteten Prozess überwachen

Beitrag lesen

Hallo,

Ich möchte von einem Java Applet aus eine Datei mit dem zugehörigem
Programm ausführen. Dazu hab ich folgendes Versucht:

Process p;
Runtime rt=Runtime.getRuntime();
p=rt.exec("cmd.exe start c:\temp\test.pdf");

Hm,

p=rt.exec("cmd.exe /C "start c:\temp\test.pdf"");

jetzt wird noch ein Thread gestartet, der p überwacht und beim Beenden
des Prozesses etwas ausführen soll.

Das sollte die PDF Datei mit dem Acrobat Reader (oder was auch immer
mit diesem Dateityp verknüpft ist) öffnen.
Das Problem ist aber, dass im Taskmanager die cmd.exe zwar auftaucht,
aber nicht in der Taskleiste und das Fenster verborgen bleibt.

Nein. Der Reader wird erst gar nicht gestartet. Zu den Parametern von CMD siehe:

C:> help cmd

Ich hab auch folgendes versucht:
p=rt.exec("rundll32 SHELL32.DLL,ShellExec_RunDLL c:\temp\test.pdf");

Das funktioniert insofern, dass der Acrobat Reader aufgeht, aber der
Process p liefert sofort zurück, dass er beendet ist.

Richtig, der Prozess zum Starten des Readers ist ja auch beendet. Der Readerprozess selbst ist ein Prozess des Systems, außerhalb der JVM.

Ich muss den Process aber überwachen.

Dann brauchtest Du so etwas wie DDE http://de.wikipedia.org/wiki/Dynamic_Data_Exchange. Suche nach "DDE Acrobat Reader". Oder Du musst eben das PDF-File mit Java-Mitteln bearbeiten http://www.google.de/search?hl=en&q=java+PDF.

viele Grüße

Axel