Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.06.2019, 23:13   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Сервис для мониторинга процессов

Пытаюсь написать службу, которая в таймере будет производить подсчёт количества запуска определённых процессов.

Набросал простой Unit для теста. Служба устанавлиывается, но не запускается: служба не ответила на запрос своевременно 1053

Код:
unit frm_Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.SvcMgr, Vcl.Dialogs,
  Vcl.ExtCtrls;

type
  TServiceMain = class(TService)
    Timer1: TTimer;
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
    procedure ServiceExecute(Sender: TService);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    function GetServiceController: TServiceController; override;
    { Public declarations }
  end;

var
  ServiceMain: TServiceMain;

implementation

{$R *.dfm}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
  ServiceMain.Controller(CtrlCode);
end;

function TServiceMain.GetServiceController: TServiceController;
begin
  Result := ServiceController;
end;

procedure TServiceMain.ServiceExecute(Sender: TService);
begin
  Timer1.Enabled := True;
  while not Terminated do
  begin
    ServiceThread.ProcessRequests(False); // Wait for termination
    Timer1.Enabled := False;
  end;
end;

procedure TServiceMain.ServicePause(Sender: TService; var Paused: Boolean);
begin
  Paused := True;
end;

procedure TServiceMain.ServiceStart(Sender: TService; var Started: Boolean);
begin
  Started := True;
end;

procedure TServiceMain.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
  Stopped := True;
end;

procedure TServiceMain.Timer1Timer(Sender: TObject);
begin
  ShowMessage('Test');
end;
P.S. На сколько целесообразно задействовывать: start, stop, pause? Может они вообще не нужны коль не используются не ради же выставление параметра в True держать?

Последний раз редактировалось Shouldercannon; 01.06.2019 в 23:34.
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что для вас важнее. Сервис или люди, которые этот сервис делают? Alar Свободное общение 4 23.03.2017 09:38
На Замок - сервис мониторинга сайта от взлома Nazamok Безопасность, Шифрование 18 26.02.2013 19:32
Программа мониторинга. Cheryrg Фриланс 4 29.12.2012 12:04
Создание задания, добавление процессов, удаление процессов RAZOR1703 Win Api 12 16.02.2012 18:07
Программа мониторинга Ivn Win Api 3 05.02.2009 21:24