Den ShutdownBlockReason musst Du nach dem Beantworten der WM_QUERYENDSESSION setzen...nicht irgendwann vorher.
Sherlock
Sicher? Nach meinem Gefühl wäre das viel zu spät. MS schreibt dazu:
Applications should
call this function as they begin an operation that cannot be interrupted, such as burning a CD or DVD. When the operation has completed, call the ShutdownBlockReasonDestroy function to indicate that the system can be shut down.
Quelle:
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Edit:
Ich habs ausprobiert: Auch damit wird das Programm beendet:
procedure TForm1.WMQueryEndSession(var Message: TWMQueryEndSession);
begin
Message.Result := 0;
ShutdownBlockReasonCreate(
handle, 'Reason gesetzt!');
end;
Der Text der "BlockReason" wird von Windows angezeigt, wenn ich ShutdownBlockReasonCreate per Button-Click oder per WMQueryEndSession aufrufe...