win_service.pas

来自「Delphi快速开发Web Server」· PAS 代码 · 共 88 行

PAS
88
字号
unit Win_Service;

interface

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

  Server_Module;

const
  RTC_DATASERVICE_NAME='Rtc_WebServer';

type
  TRtc_WebServer = class(TService)
    procedure ServiceShutdown(Sender: TService);
    procedure ServiceStart(Sender: TService; var Started: Boolean);
    procedure ServiceStop(Sender: TService; var Stopped: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
    Running:boolean;

    function GetServiceController:
      {$IFDEF VER120} PServiceController;
      {$ELSE} TServiceController; {$ENDIF} override;

    procedure StartMyService;
    procedure StopMyService;
  end;

var
  Rtc_WebServer: TRtc_WebServer;

implementation

{$R *.DFM}

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

function TRtc_WebServer.GetServiceController:
  {$IFDEF VER120} PServiceController;
  {$ELSE} TServiceController; {$ENDIF}
  begin
  Result := {$IFDEF VER120}@{$ENDIF}ServiceController;
  end;

procedure TRtc_WebServer.ServiceStart(Sender: TService; var Started: Boolean);
  begin
  StartMyService;
  Started:=Running;
  end;

procedure TRtc_WebServer.ServiceStop(Sender: TService; var Stopped: Boolean);
  begin
  StopMyService;
  Stopped:=not Running;
  end;

procedure TRtc_WebServer.ServiceShutdown(Sender: TService);
  begin
  StopMyService;
  end;

procedure TRtc_WebServer.StartMyService;
  begin
  if not running then
    begin
    Data_Server.Start;
    running := True;
    end;
  end;

procedure TRtc_WebServer.StopMyService;
  begin
  if running then
    begin
    Data_Server.Stop;
    running := False;
    end;
  end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?