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

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

Службы Windows [D7, Win2k, WinXP]


Jupiter74 ©   (2005-10-22 13:56:00) 

Нужно из программы остановить и запустить определенную службу Windows. Служба не из стандартных, как служба работает программа


Digitman   (2005-10-25 16:42:00) [1]


> Служба не из стандартных


это как ?


tesseract   (2005-10-25 16:25:00) [2]

use winsvc;
procedure ServiceWorks;
var hService,hSCmanager:cardinal;
   ServStat:PserviceStatus;
Pathname:PChar;
begin
// Создание сервиса
  new(ServStat);
   PathName :='c:\Документы\projects\service\serv.exe';
   hScManager:=openScManager(nil,nil,SC_MANAGER_ALL_ACCESS);
   if hSCMANAGER=0 then begin ShowMessage('Failed to create Database'); exit;end;
   hService := CreateService(
        hSCManager,              // SCManager database
       'MyServ',              // name of service
       'MyServ',           // service name to display
       SERVICE_ALL_ACCESS,        // desired access
       SERVICE_WIN32_OWN_PROCESS or SERVICE_INTERACTIVE_PROCESS, // service type
       SERVICE_DEMAND_START,      // start type
       SERVICE_ERROR_NORMAL,      // error control type
       PathName,            // service's binary
       nil,                      // no load ordering group
       nil,                      // no tag identifier
       nil,                      // no dependencies
       nil,                      // LocalSystem account
       nil);                     // no password

   if (hService = 0 ) then
       ShowMessage( ' Failed CreateService' +inttostr(GetLastError))
   else
       ShowMessage('Success ');
// Открытие запущеннного сервиса

   hScManager:=openScManager(nil,nil,SC_MANAGER_ALL_ACCESS);
   hService := OpenService(hSCManager,'MyServ',SERVICE_ALL_ACCESS);

//  Снятие с паузы
  ControlService(hService,SERVICE_CONTROL_CONTINUE,@ServStat);
// Пауза
ControlService(hService,SERVICE_CONTROL_PAUSE,@ServStat);
//Стоп
ControlService(hService,SERVICE_CONTROL_STOP,@ServStat);
//Удаление сервиса (вааапще)
 if not DeleteService(hService) then
       ShowMessage('Error DeleteService')
       else
        ShowMessage('DeleteService OK');

   CloseServiceHandle(hService);
end;


kami   (2005-10-22 15:37:00) [3]

OpenSCManager=>OpenService=>ControlService


Наверх

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