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文件无法拖拽功能失效

Delphi android 获取通�记录

Delphi 批量文件改名

Delphi 与 graphics gdi+ 基础学习

Delphi 实现生成手机号段

Delphi取得网页源码内容

Delphi 测试字符串读取类: tstringreader

Delphi unix时间转换成Delphi时间

Delphi 批量操作按钮组件属性

Delphi+mysql:tadoquery使用插入中文乱码解决方法

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



打赏

取消

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

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

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

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

评论

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