恢汰锒_小妖 2015-12-15 02:20 采纳率: 50%
浏览 1771

window下用delphi写一个系统服务的问题

window下用delphi写一个系统服务,系统服务再生成一个form,求大神指点下这个为什么没生成窗口
这是service application的代码

unit Unit_Main;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs,Unit3;

type
TServiceDemo = 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
ServiceDemo: TServiceDemo;
FrmMain: TForm1;
gbCanClose: Boolean;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
ServiceDemo.Controller(CtrlCode);
end;

function TServiceDemo.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;

procedure TServiceDemo.ServiceContinue(Sender: TService;var Continued: Boolean);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;

procedure TServiceDemo.ServiceExecute(Sender: TService);
begin
while not Terminated do
begin
Sleep(10);
ServiceThread.ProcessRequests(False);
end;
end;

procedure TServiceDemo.ServicePause(Sender: TService;var Paused: Boolean);
begin
Paused := True;
end;

procedure TServiceDemo.ServiceShutdown(Sender: TService);
begin
gbCanClose := true;
FrmMain.Free;
Status := csStopped;
ReportStatus();
end;

procedure TServiceDemo.ServiceStart(Sender: TService;var Started: Boolean);
begin
Started := True;
Svcmgr.Application.CreateForm(TForm1, FrmMain);
gbCanClose := False;
FrmMain.Hide;
end;

procedure TServiceDemo.ServiceStop(Sender: TService;var Stopped: Boolean);
begin
Stopped := True;
gbCanClose := True;
FrmMain.Free;
end;
end.

这是form1的
procedure TForm1.FormCreate(Sender: TObject);
begin
FormStyle := fsStayOnTop;
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
gbCanClose := False;
tmr2.Interval := 1000;
tmr2.Enabled := True;
end;

  • 写回答

2条回答

  • 吉普赛的歌 2015-12-15 03:19
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 Pwm双极模式H桥驱动控制电机
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题