Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Старт\стоп сервиса [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 смотри


Наверх

Титульная страница Поиск, карта сайта Написать письмо