![]() |
AW: Prüfen ob Service läuft...
Na ja, anstatt so eine lose Sammlung von Funktionen, sollte man das doch mal sauber in einer Klasse kapseln, denke ich.
|
AW: Prüfen ob Service läuft...
Zitat:
Objekte machen natürlich schon Sinn, aber doch eher wenn irgendwas persistent bleibt, oder? Bei Services wird man im Allgemeinen checken ob sie laufen, irgendwann starten, irgendwann stoppen. Da dazwischen das Objekt aufzubehalten hat ja echt keinen Mehrwert. Wenn's denn unbedingt sein muss könnte man Class-functions draus machen. |
AW: Prüfen ob Service läuft...
Zitat:
![]() |
AW: Prüfen ob Service läuft...
Zitat:
Ich finde so was nicht schlecht:
Delphi-Quellcode:
Es geht ja auch darum, dass zusammengehörige Funktionen auch logisch in einer Klasse zusammengefasst werden und nicht nur physisch in einer Unit.
ServiceManager := TServicemanager.Create;
ServiceManager.Computer := 'Komm_Puter'; ServiceManager.Service := 'Kaffee_Servcice'; Servicemanager.StartService; |
AW: Prüfen ob Service läuft...
Zitat:
Delphi-Quellcode:
:)
StringConcat:=TStringConcatter.Create;
StringConcat.FirstString:='Bisserl overkill, '; StringConcat.SecondString:='findest nicht?'; StringConcat.PerformStringConcatting; ShowMessage(StringConcat.ConcatResult; Objektorientiert ist nicht IMMER besser - meine Meinung halt. Mir gefällt jedenfalls "ServiceStart('Komm_Puter', 'Kaffee_Servcice')" deutlich besser. |
AW: Prüfen ob Service läuft...
Natürlich tut der Code das gleiche, keine Frage. Es geht mir in diesem Fall mehr um "aufgeräumten" Code.
Oder so:
Delphi-Quellcode:
ServiceManager := TServiceManager.Create('Komm_Puter', 'Kaffee_Service');
ServiceManager.Start; |
AW: Prüfen ob Service läuft...
Ich schmeiss mich da mal auf Luckies Seite.
Bei einem Service kann es durchaus sein, dass man den Dienst starten möchte und nach einer Zeit x wieder anhalten möchte. Gerade kursiert hier auch noch ein CodeFragment rum, was die Statusänderungen von Services überwacht. Das komplett in eine Klasse gegossen würde definitiv Sinn machen. Für alle Hardcore Fans können die Funktionen auch als Class Functions zusätzlich verfügbar gemacht werden.
Delphi-Quellcode:
ServiceControl := TServiceControl.Create( 'MeinService', 'DerComputer' );
ServiceControl.OnStart := ServiceStart; ServiceControl.Start; TServiceControl.Start( 'DeinService', 'DeinComputer' ); |
AW: Prüfen ob Service läuft...
Zitat:
|
AW: Prüfen ob Service läuft...aber funktioniert nicht in einer ISAPI-DLL
Hallo Leute kann mir einer dabei helfen?
Ich möchte aus einer ISAPI-DLL / Webserver-Anwendung prüfen ob ein bestimmter Dienst gestartet ist. In einem normalen Programm erhalte ich den Status korrekt. Wenn diese Funktion in der Webserveranwendung einbaue liefert die Funktion OpenService(SCManHandle, sService, SC_MANAGER_ALL_ACCESS) immer nur den wert 0 zurück. Liegt das evtl. an irgendwelchen Rechten? Danke für die Info voraus. Ludger Seegers function ServiceGetStatus(sMachine, sService: PChar): DWORD; var SCManHandle, SvcHandle: SC_Handle; SS: TServiceStatus; dwStat: DWORD; begin dwStat := 0; SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT); SaveInfo('SCmanHandle',asr(SCmanHandle)); if (SCManHandle > 0) then begin SvcHandle := OpenService(SCManHandle, sService, SC_MANAGER_ALL_ACCESS); SaveInfo('SvcHandle',asr(SvcHandle)); if (SvcHandle > 0) then begin if (QueryServiceStatus(SvcHandle, SS)) then dwStat := SS.dwCurrentState; CloseServiceHandle(SvcHandle); end; CloseServiceHandle(SCManHandle); end; Result := dwStat; end; function ServiceRunning(sMachine, sService: PChar): Boolean; begin Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService); end; |
AW: Prüfen ob Service läuft...
Und was sagt GetLastError dazu?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz