Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

Dienst, der auf das Herunterfahren eines Computers reagiert?

  Alt 31. Mär 2008, 15:20
Hallo,

ist es möglich einen Dienst zu programmieren, der auf das Herunterfahren oder Ausloggen des Benutzer reagiert?

Ich habe es mal mit der unten aufgeführten Funktion in einem Dienst probiert aber ohne Erfolg.
Delphi-Quellcode:
...
type
  TMyUpTimeService = class(TService)
    procedure ServiceAfterInstall(Sender: TService);
    procedure ServiceBeforeUninstall(Sender: TService);
    procedure ServiceExecute(Sender: TService);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    procedure ServiceCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function GetServiceController: TServiceController; override;
    procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QUERYENDSESSION;
  end;
...
procedure TMyUpTimeService..WMQueryEndSession(var Msg: TWMQueryEndSession);
begin
 // Auf Windows Ereignis reagieren
 case Msg.Unused of
   Integer(ENDSESSION_LOGOFF) :
     begin
       // Code beim Logoff Ereignis
     end;
 else
   begin
       // Code beim Restart / Herunterfahren Ereignis
   end;
 end;

 // Windows kann herunter, neugestartet werden oder Benutzer kann sich ausloggen
 Msg.Result := 1;
end;
...
In meiner laufenden Anwendung funktioniert es wunderbar aber nicht wenn ich das in einen Dienst einbaue.

Wie müßte ich es umsetzen oder welche Technik müßte ich verwenden?

Vielen Dank. Sven
  Mit Zitat antworten Zitat