Bei mir (WinXP SP2) wird WM_ENDSESSION nur bei einem tatsächlichen herunterfahren/abmelde etc. mit Message.result = 0 ausgelöst, bei Abbruch oder normalem beenden des Programms nicht. WM_ENDSESSION ist auch in der
PSDK eindeutig mit WM_QueryEndSession verknüpft.
Zitat:
The WM_QUERYENDSESSION message is sent when the user chooses to end the session or when an application calls the ExitWindows function. If any application returns zero, the session is not ended. The system stops sending WM_QUERYENDSESSION messages as soon as one application returns zero.
After processing this message, the system sends the WM_ENDSESSION message with the wParam parameter set to the results of the WM_QUERYENDSESSION message.