Delphi 编写系统服务


本文整理自网络,侵删。

 

打开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.

相关阅读 >>

Delphi 2009 中 string 与 char 的改变

Delphi 中 inputquery 实现密码输入

Delphi tstreamreader tfile assignfile读取文本文件

orangeui作者开源作品

Delphi在memorystream查找字符串

Delphi 解决idtcpclient和idtcpserver通信中文乱码问题

Delphi弹出信息框大全

Delphi 获取文件夹路径最后一级文件夹目录名称

Delphi xe android 判断自己程序是否是前台程序

Delphi控制摄像头

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...