Пытаюсь написать службу, которая в таймере будет производить подсчёт количества запуска определённых процессов.
Набросал простой 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 держать?