Software durch Windows herunterfahren benden
-
Problem ist folgendes.
Ich möchte mein Programm nicht von Hand schließen, sondernes soll geschlossen werden wenn Windows runtergefahren wird.Dabei kommt es mir nicht unbedingt darauf an das alles sauber beendet wird (ideal wär es jedoch), sondern das noch eine letzte Funktion ausgeführt wird bevor die Software beendet/abgeschossen wird.
Ich bin dankbar für jeden Lösungsansatz

-
Afaik schickt Windows an alle Programme noch eine "Achtung, ich werde abgeschaltet" Nachricht, bevor/während es sich beendet. Diese Nachricht kannst du natürlich entgegennehmen und deine Aufräumarbeiten erledigen.
(aber das geht nur auf WinAPI-Ebene - für reine ANSI Programme ist nicht vorgesehen, sie von außen zu beenden, es kann höchstens sein, daß das Programm vor dem Abschied noch ein Signal reingereicht bekommt, auf den es reagieren kann)
-
Zur Vervollständigung: WM_QUERYENDSESSION und WM_ENDSESSION

-
Und wie muß ich dann vorgehen auf WinAPI-Ebene?
Muß ich die in der PreTranslateMessage abfangen?
Sieht fast so aus
-
Diese Nachrichten kannst du auf dem selben Weg abfangen wie jede andere Windows-Nachricht (WM_PAINT, WM_COMMAND,...).
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
http://msdn2.microsoft.com/en-us/library/aa376890.aspx 
MSDN schrieb:
Return Value
Applications should respect the user's intentions and return TRUE. By default, the DefWindowProc function returns TRUE for this message.
If shutting down would corrupt the system or media that is being burned, the application can return FALSE. However, it is good practice to respect the user's actions.
Id est:
// in Deiner WndProc: // ... case WM_QUERYENDSESSION: // ... return (TRUE); // Herunterfahren fortsetzen return (FALSE); // Herunterfahren abbrechen // ...
-
Vielen Dank CodeFinder das habe ich noch benötigt.
Funktioniert tadellos.