Delphi и service - ошибка 1053
Не могу запустить сервис. Сервис регистрируется нормально, но при попытке запуска из сервис-контрол выдает ошибку 1053 нет ответа от службы..
Версия Делфи 10.4 . Полагаю что-то не вызвала/ не так сделала, подскажите что не так.
Взяли пример из справочной документации - добавили поток - опять не стартует
unit Unit3;
interface
uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Classes,
Vcl.SvcMgr;
type
TSparkyThread = class(TThread)
public
procedure Execute; override;
end;
Tscsservice = class(TService)
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServiceShutdown(Sender: TService);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceCreate(Sender: TObject);
procedure ServiceDestroy(Sender: TObject);
procedure ServiceAfterInstall(Sender: TService);
procedure ServiceAfterUninstall(Sender: TService);
procedure ServiceBeforeInstall(Sender: TService);
procedure ServiceBeforeUninstall(Sender: TService);
private
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
scsservice: Tscsservice;
SparkyThread: TSparkyThread;
implementation
{$R *.dfm}
procedure TSparkyThread.Execute;
begin
while not Terminated do
begin
Beep;
Sleep(500);
end;
end;
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
scsservice.Controller(CtrlCode);
end;
function Tscsservice.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure Tscsservice.ServiceAfterInstall(Sender: TService);
begin
//
end;
procedure Tscsservice.ServiceAfterUninstall(Sender: TService);
begin
//
end;
procedure Tscsservice.ServiceBeforeInstall(Sender: TService);
begin
//
end;
procedure Tscsservice.ServiceBeforeUninstall(Sender: TService);
begin
//
end;
procedure Tscsservice.ServiceContinue(Sender: TService; var Continued: Boolean);
begin
SparkyThread.Resume;
Continued := True;
end;
procedure Tscsservice.ServiceCreate(Sender: TObject);
begin
//
end;
procedure Tscsservice.ServiceDestroy(Sender: TObject);
begin
//
end;
procedure Tscsservice.ServicePause(Sender: TService; var Paused: Boolean);
begin
SparkyThread.Suspend;
Paused := True;
end;
procedure Tscsservice.ServiceShutdown(Sender: TService);
begin
//
end;
procedure Tscsservice.ServiceStart(Sender: TService; var Started: Boolean);
begin
SparkyThread := TSparkyThread.Create(False);
Started := True;
end;
procedure Tscsservice.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
SparkyThread.Terminate;
Stopped := True;
end;
end.
Источник: Stack Overflow на русском