Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
Christian hat bereits die Übersicht gepostet, die alle nötigen Infos enthält.
Hier noch ein paar Konkretisierungen:
{--------------------------------------------}
function MyAktServiceState(sServiceName: string): DWord;
{--------------------------------------------}
var
iSCM, iSrvHdl : SC_HANDLE;
begin
Result := 0;
iSCM := MyOpenSCManager; // Zugriff auf ServiceControlManagers
if (iSCM > 0) then // Erfolg ?
try
iSrvHdl := MyOpenService(iSCM, sServiceName); // Zugriff auf Dienst
if (iSrvHdl > 0) then // Erfolg ?
try
// Aktuellen Status abfragen
Result := MyQueryServiceStatus(iSrvHdl).dwCurrentState; // Status
finally
MyCloseServiceHandle(iSrvHdl); // Handle auf Dienst freigeben
end;
finally
MyCloseServiceHandle(iSCM); // Handle auf SCM freigeben
end;
end;
{--------------------------------------------}
function MyOpenSCManager(
iAccess: DWord = SC_MANAGER_CONNECT+SC_MANAGER_ENUMERATE_SERVICE): SC_HANDLE;
{--------------------------------------------}
begin
Result := OpenSCManager(nil, nil, iAccess);
end;
{--------------------------------------------}
function MyOpenService(iSCHandle: SC_HANDLE; sServiceName: string;
iAccess: DWord = SERVICE_START+SERVICE_STOP+SERVICE_QUERY_STATUS): SC_HANDLE;
{--------------------------------------------}
begin
Result := OpenService(iSCHandle, PChar(sServiceName), iAccess);
end;
{--------------------------------------------}
function MyCloseServiceHandle(iSCHandle: SC_HANDLE): boolean;
{--------------------------------------------}
begin
Result := CloseServiceHandle(iSCHandle);
end;
{--------------------------------------------}
function MyQueryServiceStatus(iSrvHdl: SC_HANDLE): TServiceStatus;
{--------------------------------------------}
begin
FillChar(Result, SizeOf(TServiceStatus), 0);
QueryServiceStatus(iSrvHdl, Result);
end;
Comment