function StopServies(sServiceName: String): boolean; // 停止某个服务;
var
schService: SC_HANDLE;
schSCManager: SC_HANDLE;
ssStatus: TServiceStatus;
begin
schSCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
schService := OpenService(schSCManager, Pchar(sServiceName), SERVICE_ALL_ACCESS);
try
if ControlService(schService, SERVICE_CONTROL_STOP, ssStatus) then
begin
Sleep(1000);
while (QueryServiceStatus(schService, ssStatus)) do
begin
Application.ProcessMessages;
if ssStatus.dwCurrentState = SERVICE_STOP_PENDING then Sleep(1000)
else break;
end; // while
if ssStatus.dwCurrentState = SERVICE_STOPPED then result := True
else result := False;
end
else result := False;
finally
CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
end;
end;原文地址:http://blog.csdn.net/gfuchao/article/details/38264827