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 得到ip三个值

Delphi 系统日期时间格式设置

delph i判断ip地址是否正确

Delphi inputbox 用法

Delphi之声音资源(*.res)的编译方法

Delphi 2009 之 tstringbuilder 类[3]: replace

Delphi 怎么将一个流转换成字符串?或者将字符串转出一个流

Delphi 读取文件的md5值

Delphi 程序嵌入桌面效果的实现

Delphi idhttp上传图给asp完美解决

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



打赏

取消

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

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

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

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

评论

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