type
TRsvrTransfer = class(TService)
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
procedure ServiceExecute(Sender: TService);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceShutdown(Sender: TService);
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;
var
RsvrTransfer: TRsvrTransfer;
implementation
uses Unit1;
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall;
begin
RsvrTransfer.Controller(CtrlCode);
end;
function TRsvrTransfer.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;
procedure TRsvrTransfer.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;
procedure TRsvrTransfer.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;
procedure TRsvrTransfer.ServicePause(Sender: TService;
var Paused: Boolean);
begin
Paused := True;
end;
procedure TRsvrTransfer.ServiceShutdown(Sender: TService);
begin
gbCanClose := true;
MainForm.Free;
Status := csStopped;
ReportStatus();
end;
procedure TRsvrTransfer.ServiceStart(Sender: TService;
var Started: Boolean);
begin
Started := True;
Svcmgr.Application.CreateForm(TMainForm, MainForm);
gbCanClose := False;
MainForm.Hide;
end;
procedure TRsvrTransfer.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
Stopped := True;
gbCanClose := True;
MainForm.Free;
end;
procedure TMainForm.j1Click(Sender: TObject);
begin
self.CnTrayIcon1.ShowApplication;
end;
procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
gbCanClose := gbCanClose;
if not gbCanClose then
begin
self.CnTrayIcon1.HideApplication;
end;
end;