Вверх ↑
Пакеты 
HiAsm4
Windows 
Компоненты 
Cиcтeмa 
Компоненты - ServiceTools

ServiceTools
Краткое описание
   Компонент предназначен для управления сервисами Windows
Параметры
  • Name - Содержит имя сервиса
  • FileName - Содержит имя файла сервиса
  • Методы
  • doStart - Запускает сервис
  • doStop - Останавливает сервис
  • doInstall - Устанавливает сервис в системе
  • doUninstall - Убирает сервис из системы
  • doPause - Приостанавливает работу сервиса
  • doContinue - Возобновляет работу сервиса
  • doShutdown - Принудительное завершение сервиса
  • События
  • onStatus - Возвращает 0 при успешном завершении действия, и номер ошибки в противном случае
  • onExecService - Событие происходит всякий раз после успешного запуска файла сервиса с параметрами /install или /uninstall
  • onExecError - Событие происходит всякий раз при ошибке запуска файла сервиса
  • Данные
  • Name - Определяет имя сервиса
  • FileName - Определяет имя файла сервиса
  • Пример
      Пример использования компонента ServiceTools
    
    Add(MainForm,2953706,112,84)
    {
    Width=354
    Height=266
    Caption="Пример использования ServiceTools"
    BorderStyle=1
    }
    Add(ServiceTools,710980,238,119)
    {
    Name="Messenger"
    link(onStatus,10241807:doMessage,[])
    }
    Add(Button,2340857,175,84)
    {
    Left=85
    Top=90
    Caption="start"
    link(onClick,710980:doStart,[(229,90)(229,125)])
    }
    Add(Button,4628631,175,126)
    {
    Left=180
    Top=90
    Caption="stop"
    link(onClick,710980:doStop,[])
    }
    Add(Message,10241807,301,119)
    {
    Message="service"
    }
      Пример перечисления сервисов в системе
    
    Add(MainForm,2953706,98,112)
    {
    Width=451
    Caption="EnumServices"
    Position=1
    Point(WidthControls)
    link(onCreate,7455525:doEnumServices,[])
    link(WidthControls,1240927:GetData,[])
    }
    Add(ServiceTools,7455525,154,98)
    {
    ServiceType=0
    Point(onEnumServices)
    Point(doEnumServices)
    link(onEnumServices,1620401:doRowAction,[])
    }
    Add(MTStrTbl,7661493,210,84)
    {
    Left=5
    Top=5
    Width=435
    Height=210
    Align=5
    Name="tab"
    Columns=#8:Name=120|16:Display Name=250|9:Status=50|
    FlatScroll=1
    }
    Add(MST_RowAction,1620401,210,119)
    {
    MSTControl="tab"
    }
    Add(EventFromData,1240927,98,49)
    {
    link(onEvent,5959656:doData,[])
    }
    Add(DoData,5959656,147,49)
    {
    Data=Integer(0)
    link(onEventData,1240927:doData,[(191,55)(191,43)(86,43)(86,55)])
    }
      Пример создания и управления сервисами

    1. Создание сервиса My_Service
    
    Add(NTService,2953706,63,105)
    {
    ServiceName="My_Service"
    Description="Test"
    RunType=0
    link(onStart,13027975:doMessage,[])
    link(onStop,13077125:doMessage,[(119,125)(119,153)])
    }
    Add(Message,13027975,147,105)
    {
    Message="Start Service"
    }
    Add(Message,13077125,147,147)
    {
    Message="Stop Service"
    }
    Создаем новый проект -- Файл -> Новый -> Windows -> Сервис, затем, копируем вышепреведенный код на поле, сохраняем схему под именем My_Service и компилируем ее. После получения файла My_Service.exe, копируем его в папку C:\
    Примечание: Сервисы обязательно должны запускаться только из папок на основных дисках, с виртуальных дисков сервисы запускаться не смогут, по причине того, что виртуальные диски создаются уже после загрузки системных сервисов.

    2. Управление сервисом My_Service при помощи компонента ServiceTools
    
    Add(MainForm,2953706,112,280)
    {
    }
    Add(Button,12973883,112,168)
    {
    Left=10
    Top=30
    Caption="Install"
    link(onClick,8515284:doInstall,[])
    }
    Add(Button,54097,112,203)
    {
    Left=70
    Top=30
    Caption="UnInstall"
    link(onClick,8515284:doUninstall,[(181,209)(181,181)])
    }
    Add(Button,10212580,112,98)
    {
    Left=260
    Top=30
    Caption="Start"
    link(onClick,8515284:doStart,[(192,104)(192,160)])
    }
    Add(Button,7403126,112,133)
    {
    Left=320
    Top=30
    Caption="Stop"
    link(onClick,8515284:doStop,[(181,139)(181,167)])
    }
    Add(ServiceTools,8515284,238,154)
    {
    Name="My_Service"
    FileName="c:\My_Service.exe"
    Point(StatusService)
    Point(doGetStatus)
    Point(onGetStatus)
    link(onGetStatus,15986041:doGetString,[])
    }
    Add(Timer,11687477,112,238)
    {
    Interval=100
    link(onTimer,8515284:doGetStatus,[(192,244)(192,188)])
    }
    Add(StrList,15986041,294,133)
    {
    Strings=#13:Нет в сиcтеме|10:Остановлен|18:В процессе запуска|21:В процессе завершения|7:Запущен|44:В процессе запуска после временной остановки|30:В процессе временной остановки|19:Временно остановлен|
    Point(doGetString)
    Point(onGetString)
    link(onGetString,8867508:doText,[])
    }
    Add(Edit,8867508,350,140)
    {
    Left=5
    Top=5
    Width=375
    Text=""
    }
    Данный пример показывает установку и запуск сервиса в режиме RunType=Auto. Если не запустить сервис в режиме RunType=Auto сразу после установки, то он запустится автоматически после перезагрузки системы. Если при создании сервиса использовать режим RunType=Demand (Вручную), то сервис необходимо запускать всегда самостоятельно
    Замечания
    Обновление элемента: [svn]ServiceTools.pas[/svn]
    BB-code статьи для вставки
    Всего комментариев: 0
    (комментарии к статье еще не добавлены)
    Комментарий
    ...