Hallo Leute
Ich habe jetzt einige Services Programmiert und möchte in einem VLC Programm diese Starten und Stoppen bzw überprüfen ob sie gestartet oder gestoppt sind. Ich habe viele Seiten durchsucht und auch bei hier einige Threads gelesen.
Um zu überprüfen welchen Status ein Service hat habe ich mich für diese Lösung entschieden:
Code:
function TFrmManage.ServiceGetStatus(sService: String): Boolean;
var
SCManager, SCService: THandle;
ServiceStatus: TServiceStatus;
begin
Result:= false;
SCManager := OpenSCManager(nil, nil, SC_MANAGER_CONNECT);
if SCManager = 0 then
begin
ShowMessage('Exit 1');
Exit;
end;
try
SCService := OpenService(SCManager, PChar(sService), SERVICE_START or SERVICE_STOP or SERVICE_QUERY_STATUS);
if SCService = 0 then
begin
ShowMessage('Exit 2');
Exit;
end;
try
ZeroMemory(@ServiceStatus, SizeOf(ServiceStatus));
QueryServiceStatus(SCService, ServiceStatus);
Result:= ServiceStatus.dwCurrentState = SERVICE_RUNNING;
ShowMessage(BoolToStr(result));
finally
CloseServiceHandle(SCService);
end;
finally
CloseServiceHandle(SCManager);
end;
end;
Jedoch wenn ich den Namen des Services angebe werdich ich bei Exit 2 immer aus der Procedure geworfen, da es das Service nicht kennt.
Als namen habe ich angegeben: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS et\Services\MeinSrv
Habe ich einen Falschen Namen angegeben oder ist ein Fehler im Code?