Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Herausbekommen ob Dienst Pausierbar oder Abbrechbar ist (https://www.delphipraxis.net/67694-herausbekommen-ob-dienst-pausierbar-oder-abbrechbar-ist.html)

Metal_Snake2 18. Apr 2006 17:50


Herausbekommen ob Dienst Pausierbar oder Abbrechbar ist
 
Guten tag,

ich beschäftige mich zurzeit mit Diensten. Um mit den Diensten umgehen zu können benutze ich die "WinSvc" unit.
Dabei ist mir aufgefallen das manche dienste Nicht abbrechbar oder auch nicht Pausierbar sind, bei machen Diensten jedoch
funktioniert beides. Wo kann ich ansetzen um herauszufinden ob ein Dienst abbrechbar oder pausierbar ist?

folgender code(aus swissdelphicenter) funktioniert demnach nicht bei allen diensten.

Delphi-Quellcode:


procedure TServiceManager.PauseService;
var
  ServiceStatus: TServiceStatus;
begin
  { Pause the service: attention not supported by all services }
  ControlService(ServiceHandle, SERVICE_CONTROL_PAUSE, ServiceStatus);
end;

function TServiceManager.StopService: Boolean;
var
  ServiceStatus: TServiceStatus;
begin
  { Stop the service }
  Result := ControlService(ServiceHandle, SERVICE_CONTROL_STOP, ServiceStatus);
end;

procedure TServiceManager.ContinueService;
var
  ServiceStatus: TServiceStatus;
begin
  { Continue the service after a pause: attention not supported by all services }
  ControlService(ServiceHandle, SERVICE_CONTROL_CONTINUE, ServiceStatus);
end;

procedure TServiceManager.ShutdownService;
var
  ServiceStatus: TServiceStatus;
begin
  { Shut service down: attention not supported by all services }
  ControlService(ServiceHandle, SERVICE_CONTROL_SHUTDOWN, ServiceStatus);
end;
Danke für Antworten.

shmia 18. Apr 2006 18:36

Re: Herausbekommen ob Dienst Pausierbar oder Abbrechbar ist
 
Das lässt sich aus dem Servicestatus (Record TServiceStatus aus Unit WinSvc) im Element dwControlsAccepted auslesen.
Die JCL hat übrigens die Klasse TJclNtService; darin ist alles was man braucht objektorientiert gekapselt.

Metal_Snake2 18. Apr 2006 19:18

Re: Herausbekommen ob Dienst Pausierbar oder Abbrechbar ist
 
Welche werte kann den dwControlsAccepted haben, ich mein es ist ja ein Cardinal typ.
Wie kann ich enstprechende für die werte von ServiceStatus.dwControlsAccepted reagieren.

Delphi-Quellcode:

//Herausfinden ob man diesen service benden oder pausieren darf
function TServiceManager.CheckAcceptControl: DWord;
var
  ServiceStatus: TServiceStatus;
begin

  Result := 0;
  QueryServiceStatus(ServiceHandle, ServiceStatus);
  Result := ServiceStatus.dwControlsAccepted;
end;

shmia 19. Apr 2006 08:33

Re: Herausbekommen ob Dienst Pausierbar oder Abbrechbar ist
 
http://msdn.microsoft.com/library/de...status_str.asp


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz