您的位置:首页 > 编程语言 > Delphi

Delphi 编写系统服务

2012-07-27 17:09 369 查看
打开Delphi 7,新建,选择Other->Service Application 修改属性中Name和DisplayName,Name是Service的名称,决定着进程的标识,DisplayName是显示在操作系统里的服务面板里的服务的名称。例如我们将Name修改为NoticeService。

新建一个类,例如名字叫做TNoticeThread,继承自TThread,并重写protected过程Execute。在NoticeService的类定义中添加一个NoticeThread对象。

找到属性的Events选项卡,分别添加OnStart,OnPause,OnContinue,OnStop事件,用这几个事件来控制NoticeThread线程的运行:

代码如下:

unit ufrmMain;

interface

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

type
TNoticeThread = class(TThread)
private

protected
procedure Execute; override;
end;

type
TNoticeService = class(TService)
procedure ServiceStart(Sender: TService; var Started: Boolean);
procedure ServiceStop(Sender: TService; var Stopped: Boolean);
procedure ServicePause(Sender: TService; var Paused: Boolean);
procedure ServiceContinue(Sender: TService; var Continued: Boolean);
private
NoticeThread: TNoticeThread;
public
function GetServiceController: TServiceController; override;
end;

var
NoticeService: TNoticeService;

implementation

{$R *.DFM}

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

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

procedure TNoticeService.ServiceStart(Sender: TService;
var Started: Boolean);
begin
NoticeThread := TNoticeThread.Create(False);
Started := True;
end;

procedure TNoticeService.ServiceStop(Sender: TService;
var Stopped: Boolean);
begin
NoticeThread.Terminate;
Stopped := True;
end;

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

procedure TNoticeService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
NoticeThread.Resume;
Continued := True;
end;

{ TNoticeThread }

procedure TNoticeThread.Execute;
begin
inherited;

end;

end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: