Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Сервис для мониторинга процессов  (Прочитано 3181 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shouldercannon
Помогающий

ru
Offline Offline

« : 01-06-2019 21:04 » new

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

Набросал простой Unit для теста. Служба устанавлиывается, но не запускается: служба не ответила на запрос своевременно 1053
Код: (Delphi)
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 держать?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines