Seite 1 von 1
Windows Dienst (Service) - Status abfragen?!
Verfasst: 12.06.2007 22:51
von smateja
Hallo zusammen - ich gruschtel seid einigen Tagen nach einer Möglichkeit auf einfachste Art und weise - den Status eines bestimmten Dienstes abzufragen - bin leider hier im Forum zwar über 1000 Beispiele der PBOsil gestoßen - auch schon im englischen Forum gesucht - aber die PBosil beispiele oder wie man nen eigenen dienst progged etc helfen mir nciht sonderlich weiter.
hab auch schon mal versucht - da cih 0,0 ahnung von api prgrammierung in pb habe - hoffe ich evtl um mithilfe von euch - oder ideen - hab mal in der msdn bizzi geblätter (bisschen ist gut *G)
naja ich habe zwar folgendes gefunden das evtl damti zu tun hat: ControlService_()
aber bin noch nciht dahinter gestiegen wie ich das anwenden könnte um den status abzufragen - gut ich könnte auch über console mit net start alle dienste abfragen die laufen + die regestry im hklm/ccs und dann vergleichen - aber bisschen arg umständlich - wäre für jede idee mal wieder glücklich.
wahrscheinlich bricht jetzt gleich großese gelächter aus weils total banal ist?! - naja ich lass mich mal überaschen.
Re: Windows Dienst (Service) - Status abfragen?!
Verfasst: 12.06.2007 23:05
von Kiffi
smateja hat geschrieben:PBOsil.
Ist das eine Mischung aus PBOSL und Persil?
Code: Alles auswählen
; Benötigt PBOSL
Procedure.s GetServiceStatusText(ServiceStatus.l)
Select ServiceStatus
Case #SERVICE_STOPPED
ProcedureReturn "The service is not running."
Case #SERVICE_START_PENDING
ProcedureReturn "The service is starting."
Case #SERVICE_STOP_PENDING
ProcedureReturn "The service is stopping."
Case #SERVICE_RUNNING
ProcedureReturn "The service is running."
Case #SERVICE_CONTINUE_PENDING
ProcedureReturn "The service continue is pending."
Case #SERVICE_PAUSE_PENDING
ProcedureReturn "The service pause is pending."
Case #SERVICE_PAUSED
ProcedureReturn "The service is paused."
EndSelect
EndProcedure
ExamimeServices()
While NextServices()
Debug GetServiceName() + ": " + GetServiceStatusText(GetServiceStatus())
Wend
Grüße ... Kiffi
RE:
Verfasst: 12.06.2007 23:08
von smateja
ha geil - kiffi - wenn ich n mädl wäre würde ich dich knutschen - fühl dich einfach geknuddeltz -
jo pb-persil - ist der 2. unoffizielle uncut teil G*
Nachtrag: ohweh - kurze frage wie mache ich das speziell für nur einen dienst der z.b. "test" heißt? - ohne alle abzufragen etc? - sorry klemm immo total - maybe leigts an der uhrzeit und internes totales durcheinander wegen zu viel dienst hier dienst dort etc?!
plz help @ kiffi
Verfasst: 12.06.2007 23:11
von ts-soft
Da Du den Service nicht gestartet hast, steht Dir das notwendige Handle nicht
zur Verfügung. Es geht also nur so, wie von Kiffi bereits gepostet, indem Du
durch alle Services iterierst bis der richtige gefunden wurde.
PBOSL stammt nicht von Henkel und beinhaltet kein Waschmittel

re:
Verfasst: 12.06.2007 23:15
von smateja
mmhm okay - dann wohl in n array schreiben - und dann auswerten - okay - letzte nervige frage noch - gibts die ultimative abfrage obs n dienst mit nem bestimmten namen überhaupt gibt?
Verfasst: 12.06.2007 23:19
von ts-soft
Ist mir nicht bekannt, könnte mir nur per WMI vorstellen, aber das würde
wohl nicht unbedingt weniger Aufwand bedeuten.
Re: re:
Verfasst: 12.06.2007 23:19
von Kiffi
smateja hat geschrieben:gibts die ultimative abfrage obs n dienst mit nem bestimmten namen überhaupt gibt?
[räusper] das ist so trivial, dass Du das eigentlich auch selber rausfinden konntest:
Code: Alles auswählen
[...]
While NextServices()
If GetServiceName() = "DeinDienst"
Debug "Gefunden!"
EndIf
Wend
Grüße ... Kiffi
RE: oh weh - bitte den letzten post von mir überlesen!
Verfasst: 12.06.2007 23:19
von smateja
Repeat
NextServices()
Debug GetServiceName() + ": " + GetServiceStatusText(GetServiceStatus())
Until GetServiceName()="Test"
würde glaub auch gehen

merci aber schon mal an alle.
Re: RE: oh weh - bitte den letzten post von mir überlesen!
Verfasst: 12.06.2007 23:21
von Kiffi
@smateja:
* Bitte Code-Tags verwenden
* Mach lieber eine kopfgesteuerte Schleife draus. Ist besser.
Grüße ... Kiffi
re:
Verfasst: 12.06.2007 23:42
von smateja
Sorry - nächste mal gibts Code-Tags
aber jetzt:
Code: Alles auswählen
CheckStatus("smateja")
If Status = "tot"
move "smakte" => bed
else
"19222"
endif