"Programm im Taskmanager schliessen" abfangen

colblake

Erfahrenes Mitglied
Hallo,

Ich habe ein Programm geschrieben welches einen virtuellen Desktop wie in linux-suse unter Windows simuliert.
Das mache ich mit Hilfe der winapi-funktion getWindowsPlacement und SW_HIDE.
Mein Problem ist aber wenn ich Fenster versteckt habe und das Programm über den Taskmanager beende, bleiben diese versteckt.
Frage: Kann man im Programm abfangen, dass wenn ich es so schließe noch eine Funktion im programm ausgeführt wird?

Ich hoffe es kann jemand helfen.

Mfg Col.Blake
 
Auch wenn das Programm über den TaskManager geschlossen wird, sollte noch CWinApp::ExitInstance() ausgeführt werden.

Gruß
MCoder
 
MCoder hat gesagt.:
Auch wenn das Programm über den TaskManager geschlossen wird, sollte noch CWinApp::ExitInstance() ausgeführt werden.

Hi MCoder,

leider stimmt das nicht.
CWinApp::ExitInstance() wird nicht mehr aufgerufen. Auch die Destruktoren der Applicationsklasse und der Dialogklasse werden nicht mehr aufgerufen.
Ich habe auch mit spy++ geschaut ob das Fenster noch eine Message bekommt. Das ist aber nicht der Fall.
Eigendlich ist das auch logisch. Der Prozess wird ja "hart" gekillt.
Doch ich brauche eine Lösung um sicher zu sein ,dass meinProgramm richtig beendet. :(

Mfg Col.Blake
 
Hi

ich hätte eine frage gibt es auch die möglichkeit unter C mit Win APi das programm vor dem Taskmanager zu verstecken.

mfg mike4004
 
moin


Nein.
Zwar könntest du noch das Fenster verstecken, aber nicht den Process (vielleicht unter nem falschen Namen...).


mfg
umbrasaxum
 
Hi Col.Blake,

du hast recht: Wenn man das Programm über die Karteikarte "Prozesse" abschießt, geht wirklich nichts mehr. Lediglich beim Schließen über "Anwendungen" wird das Programm noch regulär beendet.

Um das Abzufangen, müsste man wahrscheinlich noch einen weiteren Prozess starten, damit sich dann beide gegenseitig überwachen können. Das scheint mir allerdings für diesen wohl doch eher seltenen Fall etwas viel Aufwand.
Nicht die ideale Lösung, aber vielleicht eine Idee:
Speichere den Status (also die ausgeblendeten Fenster) in einer Datei oder der Registry. Beim regulären Beenden kannst du die Statusinfos wieder löschen. Ansonsten kann du dann beim erneuten Starten deiner Anwendung ein Restore-Funktion laufen lassen, die erstmal die zuletzt versteckten Fenster wieder anzeigt.

Grüße
MCoder
 
hi,

Ich hab man ein bisschen nachgeforscht. Mann kann mittels eines WinAPI-Hook's seinen Prozess verstecken, aber ich will ja kein Schadensprogramm schreiben. In sofern ist das ausgeschlossen. Auserdem wäre es mit Kanonen auf Spatzen geschossen.
Die Methode mit den überwachenden Prozessen erscheit mir da besser.

Danke und Mfg Col.Blake
 
Zurück