Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16495630
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 20:47:16

下载本文示例代码
Delphi 编写Windows NT服务 1.产生一个Win32服务应用   产生一个Win32服务应用,选择File|New菜单,在New Items页中选择Service Application。这样在你的工程里加入一个全局变量命名的应用,它是 TserviceApplication类型。每个服务工程自动的声明一个TServiceApplication 实例,并不需要直接的对它编程。另外自动产生一个TService对象。   当你产生一个服务应用,你会在设计环境中看到一个窗口,它对应了一个服务 (Tservice)。在Object Inspector中设置它的属性和事件以实现它。在你的服务应用中可以加入其他的服务。不要将Service加入在一个非Service Application中。当加入一个TService对象时,因为服务,应用将不产生事件请求和使用合适的窗口调用。 2.TServiceApplication   TServiceApplication封装了windows NT Service Application。它提供服务应用的基本行为框架。它包含TService对象,每个Tservice封装了一个NT服务。 服务应用提供服务产生、安装、注册、分发和卸载的方法。 注意,不要在工程的uses列表中加入Forms或HtppApp,因为这些单元有些 Aplication变量有冲突。 3.TService 每个Tservice都有一个线程。 特性 AllowPause AllowStop Dependencies DisplayName ErrCode ErrorSeverity Interactive LoadGroup Param ParamCount Password ServiceStartName ServiceThread ServiceType StartType Status TagID Terminated WaitHint Win32ErrCode 方法: Create Destroy GetServiceController LogMessage ReportStatus 事件 AfterInstall AfterUninstall BeforeInstall BeforeUninstall OnContinue OnExecute OnPause OnShutdown OnStart top 4.样例   例子使用一个TserverSocket,端口设为80,这个例子将在c:\temp目录下产生一个文本文件,名字为WebLogxxx.log(xxx是线程IDThreadID)。看运行结果:启动程序,打开一个Web浏览器,键入localhost,等待浏览器将超时,然后在c:\temp中将有一个Weblogxxx.log文件。 interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, ScktComp; type TService1 = class(TService) ServerSocket1: TServerSocket; procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure Service1Execute(Sender: TService); private { Private declarations } Stream: TMemoryStream; public function GetServiceController: PServiceController; override; { Public declarations } end; var Service1: TService1; implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall; begin Service1.Controller(CtrlCode); end; function TService1.GetServiceController: PServiceController; begin Result := @ServiceController; end; procedure TService1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var Buffer: PChar; begin Buffer := nil; while Socket.ReceiveLength > 0 do begin try Buffer := AllocMem(Socket.ReceiveLength); Socket.ReceiveBuf(Buffer^, Socket.ReceiveLength); Stream.Write(Buffer^, StrLen(Buffer)); finally FreeMem(Buffer); end; Stream.Seek(0, soFromBeginning); Stream.SaveToFile(c:\Temp\Weblog IntToStr(ServiceThread.ThreadID) .lo ); end; end; procedure TService1.Service1Execute(Sender: TService); begin Stream := TMemoryStream.Create; try ServerSocket1.Port := 80; // WWW port ServerSocket1.Active := True; while not Terminated do begin ServiceThread.ProcessRequests(False); end; ServerSocket1.Active := False; finally Stream.Free; end; end; end. Delphi 编写Windows NT服务 1.产生一个Win32服务应用   产生一个Win32服务应用,选择File|New菜单,在New Items页中选择Service Application。这样在你的工程里加入一个全局变量命名的应用,它是 TserviceApplication类型。每个服务工程自动的声明一个TServiceApplication 实例,并不需要直接的对它编程。另外自动产生一个TService对象。   当你产生一个服务应用,你会在设计环境中看到一个窗口,它对应了一个服务 (Tservice)。在Object Inspector中设置它的属性和事件以实现它。在你的服务应用中可以加入其他的服务。不要将Service加入在一个非Service Application中。当加入一个TService对象时,因为服务,应用将不产生事件请求和使用合适的窗口调用。 2.TServiceApplication   TServiceApplication封装了windows NT Service Application。它提供服务应用的基本行为框架。它包含TService对象,每个Tservice封装了一个NT服务。 服务应用提供服务产生、安装、注册、分发和卸载的方法。 注意,不要在工程的uses列表中加入Forms或HtppApp,因为这些单元有些 Aplication变量有冲突。 3.TService 每个Tservice都有一个线程。 特性 AllowPause AllowStop Dependencies DisplayName ErrCode ErrorSeverity Interactive LoadGroup Param ParamCount Password ServiceStartName ServiceThread ServiceType StartType Status TagID Terminated WaitHint Win32ErrCode 方法: Create Destroy GetServiceController LogMessage ReportStatus 事件 AfterInstall AfterUninstall BeforeInstall BeforeUninstall OnContinue OnExecute OnPause OnShutdown OnStart top 4.样例   例子使用一个TserverSocket,端口设为80,这个例子将在c:\temp目录下产生一个文本文件,名字为WebLogxxx.log(xxx是线程IDThreadID)。看运行结果:启动程序,打开一个Web浏览器,键入localhost,等待浏览器将超时,然后在c:\temp中将有一个Weblogxxx.log文件。 interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs, ScktComp; type TService1 = class(TService) ServerSocket1: TServerSocket; procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); procedure Service1Execute(Sender: TService); private { Private declarations } Stream: TMemoryStream; public function GetServiceController: PServiceController; override; { Public declarations } end; var Service1: TService1; implementation {$R *.DFM} procedure ServiceController(CtrlCode: DWord); stdcall; begin Service1.Controller(CtrlCode); end; function TService1.GetServiceController: PServiceController; begin Result := @ServiceController; end; procedure TService1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var Buffer: PChar; begin Buffer := nil; while Socket.ReceiveLength > 0 do begin try Buffer := AllocMem(Socket.ReceiveLength); Socket.ReceiveBuf(Buffer^, Socket.ReceiveLength); Stream.Write(Buffer^, StrLen(Buffer)); finally FreeMem(Buffer); end; Stream.Seek(0, soFromBeginning); Stream.SaveToFile(c:\Temp\Weblog IntToStr(ServiceThread.ThreadID) .lo ); end; end; procedure TService1.Service1Execute(Sender: TService); begin Stream := TMemoryStream.Create; try ServerSocket1.Port := 80; // WWW port ServerSocket1.Active := True; while not Terminated do begin ServiceThread.ProcessRequests(False); end; ServerSocket1.Active := False; finally Stream.Free; end; end; end. 下载本文示例代码


Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务Delphi 编写Windows NT服务
阅读(177) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~