Prozesse 'koppeln'

Hallo,
ich habe folgendes vor. Nachdem ich mehrere Prozesse gestartet habe (in meinem Fall mit einer Applikation .NET C#), möchte ich irgendwie erreichen, alle diese Prozesse zu schließen, sobald ich einen Prozess beende!

Beispiel: Ich rufe eine Software auf, welche verschlüsselte Daten zurück in HTML-Dateien wandelt. Anschließend rufe ich einen Browser (IE) auf, um diese Pages anzuzeigen. Soweit kein Problem. Wenn ich jetzt den Browser wieder schließe, möchte ich natürlich, dass auch die Software zur Entschlüsselung beendet wird.

Kann mir jemand helfen ???
Vielen Dank i.V.

Hallo,

Vielleicht kann dir das einen Anstoß geben:

Meine Applikation startet andere Applikationen über Process p; p.Start… dabei wird jede Applikation über eine Manager Klasse überwacht und es wird auf p.WaitForExit() gewartet. In meinem Fall wollte ich nur sicherstellen, dass alle gestarteten Applikationen zuvor geschlossen werden, bevor meine Applikation beendet wird. Schließt ein Benutzer meine Applikation schließe ich der Reihe nach alle Prozesse mit p.CloseMainWindow() bzw. mit p.Kill() wenn keine Reaktion zu erkennen ist. Du könntest so etwas ähnliches bauen und wenn sich ein Prozess schließt ein Event werfen, worauf du alle anderen Applikationen auch schließt…

grüße
Patrick

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

So könnte es klappen unter Win32! Danke erstmal dafür!

Jetzt kommt noch erschwerend hinzu, dass ich das Compact Framework nutze und somit keine Process-Methoden zur Verfügung habe. Das CF nutze ich übrigens, um meine Applikation auch auf PocketPC mit WinCE nutzen zu können.

Starten tue ich die Prozesse derzeit mit DLL-Import:

auf dem PC:

[DllImport(„kernel32.dll“)]
static extern bool CreateProcess(string lpApplicationName,string lpCommandLine, ref SECURITY_ATTRIBUTES lpProcessAttributes, ref SECURITY_ATTRIBUTES lpThreadAttributes, bool bInheritHandles,uint dwCreationFlags, IntPtr lpEnvironment, string lpCurrentDirectory,[In] ref STARTUPINFO lpStartupInfo,out PROCESS_INFORMATION lpProcessInformation);

auf dem PDA (WinCE):

[DllImport(„coredll.Dll“)]
private static extern int CreateProcess(string strImageName, string strCmdLine, IntPtr pProcessAttributes, IntPtr pThreadAttributes , int bInheritsHandle, int dwCreationFlags, IntPtr pEnvironment, IntPtr pCurrentDir, Byte[] bArray, ProcessInfo_pda oProc);

Wenn ich einen Prozess gestartet habe, merke ich mir so eine Prozess-Info (IntPtr hProcess), mit der ich dann mit ‚TerminateProcess(hProcess, …)‘ zumindest auf Win32 den Prozess wieder schließen kann.
Ich sehe derzeit aber keinerlei Möglichkeit, die laufenden Prozesse zu überwachen, um ggf. zu reagieren! :frowning:

Na ja, vielleicht hat ja noch jemand ne Idee ?!? :wink:

Beanpole

hi!

also fallst du „schon“ eine Lösung hast, wärs toll wenn du die hier nochmals postest…

grüße und danke
patrick