![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Старт\стоп сервиса [D6, D7, Win2k, WinXP]
maxim161 © (2006-01-31 19:31:00)В общем, сталкнулся с такой проблемой: Сервис установить\удалить командами servicename /(un)install я могу, а как стартануть\остановить сервис, может быть есть что-то вроде servicename /start...
Rouse_ (2006-01-31 21:46:00) [1]в ServiceName имя сервиса:
procedure StopService;
var
SCManager, Service: SC_HANDLE;
ServiceStatus: TServiceStatus;
begin
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCManager <> 0 then
try
Service := OpenService(SCManager, ServiceName, SERVICE_STOP);
if Service <> 0 then
try
if not ControlService(Service, SERVICE_CONTROL_STOP, ServiceStatus)
and (ServiceStatus.dwCurrentState = SERVICE_STOPPED) then
begin
ShowMessage('StopService > ControlService: [SERVICE_CONTROL_STOP] ' + SysErrorMessage(GetLastError));
Exit;
end;
finally
CloseServiceHandle(Service);
end;
finally
CloseServiceHandle(SCManager);
end;
end;
function RunService: Boolean;
var
SCManager, Service: SC_HANDLE;
P: PChar;
begin
Result := False;
SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS);
if SCManager <> 0 then
try
Service := OpenService(SCManager, ServiceName, SERVICE_START);
if Service <> 0 then
try
P := nil;
Result := StartService(Service, 0, P) or
(GetLastError = ERROR_SERVICE_ALREADY_RUNNING);
finally
CloseServiceHandle(Service);
end
else
Result := GetLastError = ERROR_SERVICE_DOES_NOT_EXIST;
finally
CloseServiceHandle(SCManager);
end;
end;
Джо (2006-01-31 20:11:00) [2]Смотри Service functions в SDK. В частности, стартует сервис функция StartServive, приостанавливает и останавливает функция ControlService с соответствующими параметрами, если не ошибаюсь.
xShadow (2006-01-31 19:56:00) [3]net start и net stop смотри