Also ich habe mir da 2 Funktionen aus dem Forum geholt. Nun beide kann ich auch problemlos
auslesen. Nun kommt aber mein Problem
den Dienst bei welchem ich den ServiceGetStatus
auslesen will kann auf jedem Computer unterschiedlich 'SQLANYs_sql'+ Computername. Das funktioniert nun aber nicht da die inkompatible Typen verwende. PAnsiChar & String.
kann mir da jemand helfen.
Delphi-Quellcode:
function FComputername:
String;
var
CompName:
Array [0 .. 256]
of char;
size: DWORD;
begin
size := 256;
GetComputerName(Compname, size);
Result := CompName;
end;
{}
function ServiceGetStatus(sMachine, sService: PChar): DWORD;
var
SCManHandle, SvcHandle: SC_Handle;
SS: TServiceStatus;
dwStat: DWORD;
begin
sService := [b]'
SQLANYs_sql'+ FComputername;[/b]
dwStat := 0;
// Open service manager handle.
SCManHandle := OpenSCManager(sMachine,
nil, SC_MANAGER_CONNECT);
if (SCManHandle > 0)
then
begin
SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS);
// if Service installed
if (SvcHandle > 0)
then
begin
// SS structure holds the service status (TServiceStatus);
if (QueryServiceStatus(SvcHandle, SS))
then
dwStat := ss.dwCurrentState;
CloseServiceHandle(SvcHandle);
end;
CloseServiceHandle(SCManHandle);
end;
Result := dwStat;
end;
function ServiceRunning(sMachine, sService: PChar): Boolean;
begin
Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService);
end;
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]