Autor Beitrag
crowley
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 406

Win XP, Win Vista, Mandriva, Ubuntu
Delphi 4-8, Delphi 2006, Delphi 2007
BeitragVerfasst: Di 06.02.07 16:32 
Servus und hallo,

Ich bräuchte Eure Hilfe zu folgender Frage: Wie kann ich herausfinden, ob ein Dienst stoppbar oder pausierbar (oder oder oder) ist?

Ehrlich gesagt, denke ich, dass ich den richtigen Weg gegangen bin, mein Chef einen Fehler reingesetzt hat und ich es nun wieder "korrigieren" darf.

Folgendes: Ich lese den Service Status mit QueryServiceStatus

Als Ergebnis erhalte ich einen record vom Typ
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  _SERVICE_STATUS = record
    dwServiceType: DWORD;
    dwCurrentState: DWORD;
    dwControlsAccepted: DWORD;
    dwWin32ExitCode: DWORD;
    dwServiceSpecificExitCode: DWORD;
    dwCheckPoint: DWORD;
    dwWaitHint: DWORD;
  end;


dwControlsAccepted ist das, was ich brauche ;) nur... wie bekomme ich den richtigen Wert da raus?

Meine Idee war/ist:

ausblenden Delphi-Quelltext
1:
2:
CanPause := ((dwControlsAccepted and SERVICE_ACCEPT_PAUSE_CONTINUE) = 0);
CanStop  := ((dwControlsAccepted and SERVICE_ACCEPT_STOP) = 0);


Mein Chef änderte das = in ein <> ...
Daraufhin konnten anschließend "geupdatete" Dienste nicht mehr gestoppt bzw. pausiert werden. Denn den Diensten wurde beim Update der Konfiguration jeweils ein "False" da rein geschrieben, obwohl eigentlich ein "True" darin hätte stehen müssen.

Nun... bevor ich meinem Chef nun an den Karren fahre, würde ich gerne 100%ig sicher wissen, ob ich recht habe. Gibt es irgendwo eine Doku dazu?

Danke schön,
Crowley