Windows Dienst (Service) - Status abfragen?!

Anfängerfragen zum Programmieren mit PureBasic.
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

Windows Dienst (Service) - Status abfragen?!

Beitrag 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.
PB 4.6 / 32 Bit / 64 Bit
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Windows Dienst (Service) - Status abfragen?!

Beitrag von Kiffi »

smateja hat geschrieben:PBOsil.
Ist das eine Mischung aus PBOSL und Persil? :lol:

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
a²+b²=mc²
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

RE:

Beitrag 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
PB 4.6 / 32 Bit / 64 Bit
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

re:

Beitrag 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?
PB 4.6 / 32 Bit / 64 Bit
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Ist mir nicht bekannt, könnte mir nur per WMI vorstellen, aber das würde
wohl nicht unbedingt weniger Aufwand bedeuten.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: re:

Beitrag 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
a²+b²=mc²
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

RE: oh weh - bitte den letzten post von mir überlesen!

Beitrag von smateja »

Repeat

NextServices()

Debug GetServiceName() + ": " + GetServiceStatusText(GetServiceStatus())

Until GetServiceName()="Test"

würde glaub auch gehen ;) merci aber schon mal an alle.
PB 4.6 / 32 Bit / 64 Bit
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: RE: oh weh - bitte den letzten post von mir überlesen!

Beitrag von Kiffi »

@smateja:

* Bitte Code-Tags verwenden

* Mach lieber eine kopfgesteuerte Schleife draus. Ist besser.

Grüße ... Kiffi
a²+b²=mc²
smateja
Beiträge: 250
Registriert: 25.11.2004 19:51
Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS

re:

Beitrag 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

PB 4.6 / 32 Bit / 64 Bit
Antworten