日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

Delphi 編寫Windows NT服務

Delphi 編寫Windows NT服務

更新時間:2019-05-30 文章作者:未知 信息來源:網絡 閱讀次數:

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

OnStop



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.

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 久久不见久久见免费影院 | 不卡国产 | 天天摸天天射 | 91视频黄版| 久久99精品视香蕉蕉 | 成人免费观看在线网址 | 中文字幕在线观看一区二区三区 | 中文字幕日韩精品麻豆系列 | 欧美一区二区三区日韩免费播 | 亚洲精品久久久久电影 | 日韩 国产 欧美 精品 在线 | 99久久一区| 精新精新国产自在现拍欣赏网 | 国产91精选在线观看网站 | 国产1区2区3区在线观看 | 国产91精品系列在线观看 | 精品国产午夜肉伦伦影院 | 操操操操操操操操操操操操 | 天天做日日干 | 国产高清久久 | 大香线蕉伊人久久爱 | 久久久久夜夜夜精品国产 | 久久久在线视频精品免费观看 | 精品夜夜春夜夜爽久久 | 中文字幕乱码二三区免费 | 国产成人天天5g影院 | 国产成人综合久久亚洲精品 | 交在线观看网站视频 | 欧美乱操 | 日韩在线国产 | 亚洲在线观看免费 | 88av网| 四虎精品成人a在线观看 | 99久久综合狠狠综合久久 | 久久精品国产99国产精品 | 日本精品久久久久中文字幕 1 | 亚洲在线观看一区 | 久久综合九色综合欧美9v777 | 精品国产日韩久久亚洲 | 天天摸天天碰成人免费视频 | 手机在线成人精品视频网 |