Показать сообщение отдельно
Старый 13.07.2004, 14:19     # 5
B0m.FLy
Guest
 
Сообщения: n/a

всё, всем спасибо
может кому на будущее пригодится

подключаем WinSvc и

Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
var 
  h_manager,h_svc: SC_Handle; 
  svc_status: TServiceStatus; 
  Temp: PChar; 
  dwCheckPoint: DWord;
begin
 h_manager:=OpenSCManager(PChar(''),nil, SC_MANAGER_CONNECT);
  if h_manager > 0 then
  begin
    h_svc := OpenService(h_manager,PChar('ваш_сервис'), SERVICE_STOP or SERVICE_QUERY_STATUS);
    if h_svc > 0 then
    begin
      if(ControlService(h_svc,SERVICE_CONTROL_STOP, svc_status))then
      begin
        if(QueryServiceStatus(h_svc,svc_status))then
        begin
          while(SERVICE_STOPPED <> svc_status.dwCurrentState)do
          begin
            dwCheckPoint := svc_status.dwCheckPoint;
            Sleep(svc_status.dwWaitHint);
            if(not QueryServiceStatus(h_svc,svc_status))then
            begin
              break;
            end;
            if(svc_status.dwCheckPoint < dwCheckPoint)then
              break;
           end;
        end; 
      end;
      CloseServiceHandle(h_svc); 
    end;
    CloseServiceHandle(h_manager);
    StaticText1.Caption := 'Сервис остановлен';
  end;
end;