如何用Delphi編寫Win2000服務(wù)程序:
一、Win2000服務(wù)簡介
服務(wù)程序(Service Application)是一種運(yùn)行于WinNT的后臺(tái)程序,每個(gè)服務(wù)程序(Service Application)中可能包含若干個(gè)服務(wù)(Service),每個(gè)服務(wù)就是其中的一個(gè)線程(該服務(wù)也可以創(chuàng)建多個(gè)子線程)。采用服務(wù),應(yīng)用程序可以獲得特殊的權(quán)限,而且不會(huì)被用戶通過Win2000的任務(wù)管理器直接結(jié)束程序,所以服務(wù)常常用來實(shí)現(xiàn)一些特殊的目標(biāo)。
通過Win2000控制面板中的服務(wù)管理工具,我們可以設(shè)置/查看服務(wù)的特性:
?。?)服務(wù)名稱;(2)顯示名稱;(3)描述;(4)啟動(dòng)類型;(5)依賴關(guān)系;
其中,服務(wù)名稱是標(biāo)識(shí)給服務(wù)的。
以Win2000的C:/WINNT/System32/services.exe程序?yàn)槔?,該exe文件對(duì)應(yīng)一個(gè)Service Application,是該服務(wù)程序的可見實(shí)體;該exe中包含多個(gè)服務(wù)(Service),例如Alerter,Dhcp(DHCP Client),Messenger等。當(dāng)我們結(jié)束一個(gè)服務(wù)的時(shí)候,該服務(wù)所在的Service Application中的其他服務(wù)并沒有被終止。
在Delphi中,Borland的工程師為我們提供了TServiceApplication,TService,TServiceThread等類,封裝了大量細(xì)節(jié),簡化了服務(wù)程序的開發(fā)。
二、TServiceApplication
在Delphi中,類TServiceApplication就對(duì)應(yīng)上述的ServiceApplication。利用Delphi的開發(fā)環(huán)境,我們新建一個(gè)Service Application Project,同時(shí)就創(chuàng)建了一個(gè)繼承自TService的類。項(xiàng)目文件中的Application對(duì)象就是一個(gè)TServiceApplication實(shí)例。每個(gè)TServiceApplication包含若干個(gè)TService對(duì)象,正好對(duì)應(yīng)上述的服務(wù)程序和服務(wù)之間的數(shù)量關(guān)系。
通過閱讀TServiceApplication和TService類的定義,可以得知,TServiceApplication從TComponent類繼承而來,TService從類TDataModule基礎(chǔ)而來,Application對(duì)象負(fù)責(zé)各個(gè)TService對(duì)象的Create和Destroy。跟蹤下列代碼
Application.CreateForm(TService1, Service1);
可以發(fā)現(xiàn)創(chuàng)建的TService對(duì)象的Owner都是Application對(duì)象;在VCL FrameWork中Owner總是負(fù)責(zé)Destroy各個(gè)Component對(duì)象(VCL的TComponent類采用了Composite模式),所以TServiceApplication也將Destroy各個(gè)TService對(duì)象。
新聞熱點(diǎn)
疑難解答
圖片精選