Hallo Liste,

ich m�chte gern externe Anwendungen starten und mitbekommen, wenn sie beendet werden. Ich dachte dabei an System.Diagnostics.Process und wollte die Zuordnung �ber die ProcessID herstellen, also z.B. so:
Process prDoc = new Process();
prDoc.StartInfo.UseShellExecute = true;
prDoc.StartInfo.FileName = strFullPathFileName; // z.B. "C:\\Testdok.doc" oder "C:\\Testtxt.txt"
prDoc.Start();


und dann int ProcessID = prDoc.Id;

Leider klappt das so nicht immer, denn in der letzten Zeile bekomme ich bei MS-Office-Applikationen eine InvalidOperationException zur�ck, die eigentlich lt. Doku nur dann auftreten darf, wenn der Prozess nicht gestartet wurde. Bei Notepad funktioniert es hingegen einwandfrei.

Laut einer verwegenen MSDN-Seite (hab den Link jetzt nicht zur Hand) haben die Office-Programme eine Besonderheit beim Eintrag ihres Prozesses in die Prozesstabelle der ausf�hrenden Maschine. Auf der bewu�ten Seite, die aber das Word-Objektmodell zur�ckliefern soll, werden Tricks �belster Sorte (20x versuchen, dazwischen Sleeps von je 1/2 Sekunde, Fokuswechsel auf die eigene Anwendung) verwendet, deren Einsatz ich nach M�glichkeit vermeiden will. Gibt es eine zuverl�ssige Methode, einen Prozess zu starten und die Prozessid zur�ckzugeben (oder eine andere eindeutige Referenz auf den laufenden Proze�)?

Ich will dabei nach M�glichkeit nicht mit dem Exited-Ereignis arbeiten, weil meine Anwendung u.U. zwischendurch beendet wird (ich schreibe Temp-Dateien mit der Proze�information).

Gru�, Helge
_______________________________________________
CSharp.net mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/csharp.net

Antwort per Email an