一个简单的服务程序的源代码

这些文章在我的白度空间上已经发表过了,直接拷贝过来的。

unit Unit1;

interface

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

type
TTestService = class(TService)
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceExecute(Sender: TService);
    procedure ServiceBeforeInstall(Sender: TService);
    procedure ServiceAfterInstall(Sender: TService);
    procedure ServiceAfterUninstall(Sender: TService);
    procedure ServiceBeforeUninstall(Sender: TService);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
    procedure ServiceShutdown(Sender: TService);
    procedure ServicePause(Sender: TService; var Paused: Boolean);
    procedure ServiceContinue(Sender: TService; var Continued: Boolean);
private
    { Private declarations }
    fPaused : boolean;
public
    function GetServiceController: TServiceController; override;
    { Public declarations }
end;

var
TestService: TTestService;

implementation

{$R *.DFM}

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

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

procedure TTestService.ServiceStart(Sender: TService; var Started: Boolean);
begin
{ Alert the user }
ShowMessage('OnStart');
{ tell the OS that we're starting }
Started := TRUE;
end;

procedure TTestService.ServiceExecute(Sender: TService);
begin
ShowMessage('OnExecute');
{ Execute until we're told to stop }
while not Terminated do begin
    { Only act if we're not paused }
    if not fPaused then begin
      { wait 2 seconds }
      Sleep(2000);
      { beep }
      MessageBeep(0);
    end; { if not ServiceThread.Suspended }
    { Let other threads execute }
    ServiceThread.ProcessRequests(FALSE);
end; { while not Terminated }
end;

procedure TTestService.ServiceBeforeInstall(Sender: TService);
begin
ShowMessage('BeforeInstall');
end;

procedure TTestService.ServiceAfterInstall(Sender: TService);
begin
ShowMessage('After Install');
end;

procedure TTestService.ServiceAfterUninstall(Sender: TService);
begin
ShowMessage('After Uninstall');
end;

procedure TTestService.ServiceBeforeUninstall(Sender: TService);
begin
ShowMessage('Before Uninstall');
end;

procedure TTestService.ServiceStop(Sender: TService; var Stopped: Boolean);
begin
{ Tell the service thread to terminate }
ServiceThread.Terminate;
{ Tell the OS that we're stopping }
Stopped := TRUE;
{ Alert the user }
ShowMessage('Stop');
end;

procedure TTestService.ServiceShutdown(Sender: TService);
begin
ShowMessage('Shutdown');
end;

procedure TTestService.ServicePause(Sender: TService; var Paused: Boolean);
begin
{ tell OS that pause was successful }
Paused := True;
{ set are pause flag so Execute loop doesn't do anything }
fPaused := TRUE;
{ Alert the user visually }
ShowMessage('Pause');
end;

procedure TTestService.ServiceContinue(Sender: TService;
var Continued: Boolean);
begin
{ Tell the OS that the Continue was successful }
Continued := True;
{ Turn our internal pause flag off }
fPaused := FALSE;
{ alert the user visually }
ShowMessage('Continue');
end;

end.

delphi6,7下调试成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值