AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Prüfen ob Service läuft...

Ein Thema von Tyrael Y. · begonnen am 15. Aug 2003 · letzter Beitrag vom 24. Mai 2012
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#11

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 12:09
Na ja, anstatt so eine lose Sammlung von Funktionen, sollte man das doch mal sauber in einer Klasse kapseln, denke ich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#12

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 12:19
Na ja, anstatt so eine lose Sammlung von Funktionen, sollte man das doch mal sauber in einer Klasse kapseln, denke ich.
Find ich in dem Fall nicht.
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.
  Mit Zitat antworten Zitat
ASM

Registriert seit: 16. Aug 2004
165 Beiträge
 
Delphi 7 Enterprise
 
#13

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 12:49
Na ja, anstatt so eine lose Sammlung von Funktionen, sollte man das doch mal sauber in einer Klasse kapseln, denke ich.
Gibt's doch schon, sogar als Komponente einsetzbar: http://www.programmersheaven.com/mb/...n-delphi-code/
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#14

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 13:07
Na ja, anstatt so eine lose Sammlung von Funktionen, sollte man das doch mal sauber in einer Klasse kapseln, denke ich.
Find ich in dem Fall nicht.
Denke schon, da die Funktionen ein paar Gemeinsamkeiten haben, wie zum Beispiel den Computernamen und so. Und global muss das Objekt auch nicht sein.

Ich finde so was nicht schlecht:
Delphi-Quellcode:
ServiceManager := TServicemanager.Create;
ServiceManager.Computer := 'Komm_Puter';
ServiceManager.Service := 'Kaffee_Servcice';
Servicemanager.StartService;
Es geht ja auch darum, dass zusammengehörige Funktionen auch logisch in einer Klasse zusammengefasst werden und nicht nur physisch in einer Unit.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#15

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 13:14
Ich finde so was nicht schlecht:
Delphi-Quellcode:
ServiceManager := TServicemanager.Create;
ServiceManager.Computer := 'Komm_Puter';
ServiceManager.Service := 'Kaffee_Servcice';
Servicemanager.StartService;
Es geht ja auch darum, dass zusammengehörige Funktionen auch logisch in einer Klasse zusammengefasst werden und nicht nur physisch in einer Unit.
Hmmm
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#16

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 13:17
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 23:19
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' );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#18

AW: Prüfen ob Service läuft...

  Alt 8. Sep 2011, 23:56
Ich schmeiss mich da mal auf Luckies Seite.
Danke.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Ludger Seegers

Registriert seit: 11. Nov 2011
4 Beiträge
 
#19

AW: Prüfen ob Service läuft...aber funktioniert nicht in einer ISAPI-DLL

  Alt 24. Mai 2012, 01:32
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;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#20

AW: Prüfen ob Service läuft...

  Alt 24. Mai 2012, 01:43
Und was sagt GetLastError dazu?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 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