Einzelnen Beitrag anzeigen

Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

ShutdownBlockReason ist weg aber doch noch da...

  Alt 21. Feb 2011, 08:29
Hallo,

in einer meiner Anwendungen arbeite ich mit ShutdownBlockReasonCreate bzw. ShutdownBlockReasonDestroy.
Nun hab ich das Problem, dass EIGENTLICH alles funktioniert.
Der Code wird sauber ausgeführt, ich bekomm in den Logfiles die Meldung, dass ShutdownBlockReasonDestroy sauber ausgeführt wurde, aber das System hängt trotzdem immernoch in diesem ShutdownBlock Bildschirm und zeigt mir meine Block-Nachricht an.

Hier der Code:
Delphi-Quellcode:
procedure TtfMain.UnblockShutdown;
var
LHandle: THandle;
begin
logger.log('Unblock Shutdown',ltMust);
if FShutdownBlocked then
  begin
  if WindowsVersionInfo1.MajorVersion>=6 then
    begin
    LHandle:=GetModuleHandle(PChar('user32.dll'));
    try
      if LHandle = 0 then logger.Log('user32.dll kann nicht geladen werden. '+SysErrorMessage(GetLastError))
      else
        begin
        if ShutdownBlockReasonDestroy(Handle)then
          begin
          logger.log('ShutdownBlock wurde zerstoert',ltMust);
          FShutdownBlocked:=False;
          end
        else logger.log('ShutdownBlock konnte nicht zerstoert werden. '+SysErrorMessage(GetLastError),ltMust);
        end;
    finally
      FreeLibrary(LHandle);
    end;
    end
  else FShutdownBlocked:=False;
  end;
end;
Die Anwendung wird dann beendet. Jedenfalls ist sie beendet wenn ich bei dem Block-Bildschirm auf abbrechen gehe und damit zurückgehe.
Wie gesagt, obwohl die Funktion sauber ausgeführt und das Programm sogar beendet wird, bleibt die Nachricht stehen und das System fährt nicht fort mit runterfahren, was eigentlich geplant war.

Hat jemand ne Idee was da schiefgeht?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat