我做了个服务,当服务启动时就打开一个程序的主窗体,服务停止就自己注销,但发现服务启动时没能打开我的程序窗体,不知道为什么,我把服务代码帖出来,大家看是什么原因:unit Unit1_main;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;type
TBackupService = 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
BackupService: TBackupService;implementationuses BackMain;{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;
begin
BackupService.Controller(CtrlCode);
end;function TBackupService.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TBackupService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TBackupService.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TBackupService.ServicePause(Sender: TService;
var Paused: Boolean);
begin
Paused := True;
end;procedure TBackupService.ServiceShutdown(Sender: TService);
begin
gbCanClose := true;
FrmMain.Free;
Status := csStopped;
ReportStatus;
end;procedure TBackupService.ServiceStart(Sender: TService;
var Started: Boolean);
var
frmMain:TfrmMain;
begin
Started := True;
SvcMgr.Application.CreateForm(TfrmMain,frmMain);//服务启动时打开窗体
gbCanClose := False;
FrmMain.Hide;
end;procedure TBackupService.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
Stopped := True;
gbCanClose := True;
FrmMain.Free;
end;end.
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;type
TBackupService = 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
BackupService: TBackupService;implementationuses BackMain;{$R *.DFM}procedure ServiceController(CtrlCode: DWord); stdcall;
begin
BackupService.Controller(CtrlCode);
end;function TBackupService.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;procedure TBackupService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TBackupService.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;procedure TBackupService.ServicePause(Sender: TService;
var Paused: Boolean);
begin
Paused := True;
end;procedure TBackupService.ServiceShutdown(Sender: TService);
begin
gbCanClose := true;
FrmMain.Free;
Status := csStopped;
ReportStatus;
end;procedure TBackupService.ServiceStart(Sender: TService;
var Started: Boolean);
var
frmMain:TfrmMain;
begin
Started := True;
SvcMgr.Application.CreateForm(TfrmMain,frmMain);//服务启动时打开窗体
gbCanClose := False;
FrmMain.Hide;
end;procedure TBackupService.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
Stopped := True;
gbCanClose := True;
FrmMain.Free;
end;end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货