
Zitat von
sakura:
Folgende Funktion liefert E_FAIL zurück, wenn der Service nicht installiert ist. Getestet unter Win2003.
Delphi-Quellcode:
uses
WinSvc;
function ServiceGetStatus(sMachine, sService: AnsiString): Integer;
var
srvManager,srvHandle: SC_Handle;
srvStatus: TServiceStatus;
hStat: Integer;
begin
hStat := E_FAIL;
srvManager := OpenSCManager(PChar(sMachine), nil, SC_MANAGER_CONNECT);
if srvManager > 0 then
begin
srvHandle := OpenService(srvManager, PChar(sService), SERVICE_QUERY_STATUS);
if srvHandle > 0 then
begin
if QueryServiceStatus(srvHandle, srvStatus) then
hStat := srvStatus.dwCurrentState;
CloseServiceHandle(srvHandle);
end;
CloseServiceHandle(srvManager);
end;
Result := hStat;
end;
...

...
Funktioniert bei mir leider nicht, ich kriege trotzdem den Status 4 zurück, welcher eigentlich für running steht.
Ich versteh das nicht...