zoukankan      html  css  js  c++  java
  • 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线程的运行:

          代码如下:

    [delphi] view plain copy
     
     print?
    1. unit ufrmMain;  
    2.   
    3. interface  
    4.   
    5. uses  
    6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;  
    7.   
    8. type  
    9.   TNoticeThread = class(TThread)  
    10.   private  
    11.   
    12.   protected  
    13.     procedure Execute; override;  
    14.   end;  
    15.   
    16. type  
    17.   TNoticeService = class(TService)  
    18.     procedure ServiceStart(Sender: TService; var Started: Boolean);  
    19.     procedure ServiceStop(Sender: TService; var Stopped: Boolean);  
    20.     procedure ServicePause(Sender: TService; var Paused: Boolean);  
    21.     procedure ServiceContinue(Sender: TService; var Continued: Boolean);  
    22.   private  
    23.     NoticeThread: TNoticeThread;  
    24.   public  
    25.     function GetServiceController: TServiceController; override;   
    26.   end;  
    27.   
    28. var  
    29.   NoticeService: TNoticeService;  
    30.   
    31. implementation  
    32.   
    33. {$R *.DFM}  
    34.   
    35. procedure ServiceController(CtrlCode: DWord); stdcall;  
    36. begin  
    37.   NoticeService.Controller(CtrlCode);  
    38. end;  
    39.   
    40. function TNoticeService.GetServiceController: TServiceController;  
    41. begin  
    42.   Result := ServiceController;  
    43. end;  
    44.   
    45. procedure TNoticeService.ServiceStart(Sender: TService;  
    46.   var Started: Boolean);  
    47. begin  
    48.   NoticeThread := TNoticeThread.Create(False);  
    49.   Started := True;  
    50. end;  
    51.   
    52. procedure TNoticeService.ServiceStop(Sender: TService;  
    53.   var Stopped: Boolean);  
    54. begin  
    55.   NoticeThread.Terminate;  
    56.   Stopped := True;  
    57. end;  
    58.   
    59. procedure TNoticeService.ServicePause(Sender: TService;  
    60.   var Paused: Boolean);  
    61. begin  
    62.   NoticeThread.Suspend;  
    63.   Paused := True;  
    64. end;  
    65.   
    66. procedure TNoticeService.ServiceContinue(Sender: TService;  
    67.   var Continued: Boolean);  
    68. begin  
    69.   NoticeThread.Resume;  
    70.   Continued := True;  
    71. end;  
    72.   
    73. { TNoticeThread }  
    74.   
    75. procedure TNoticeThread.Execute;  
    76. begin  
    77.   inherited;  
    78.   
    79. end;  
    80.   
    81. end.  

    http://blog.csdn.net/yanjiaye520/article/details/7794550

  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/findumars/p/5090498.html
Copyright © 2011-2022 走看看