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