用delphi編寫windows服務(wù)程序

用delphi編寫windows服務(wù)程序

ID:12530787

大?。?34.00 KB

頁數(shù):18頁

時(shí)間:2018-07-17

用delphi編寫windows服務(wù)程序_第1頁
用delphi編寫windows服務(wù)程序_第2頁
用delphi編寫windows服務(wù)程序_第3頁
用delphi編寫windows服務(wù)程序_第4頁
用delphi編寫windows服務(wù)程序_第5頁
資源描述:

《用delphi編寫windows服務(wù)程序》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫

1、用Delphi編寫Windows服務(wù)程序(1)一、Windows服務(wù)簡(jiǎn)介  服務(wù)程序(ServiceApplication)是一種運(yùn)行于WinNT的后臺(tái)程序,每個(gè)服務(wù)程序(ServiceApplication)中可能包含若干個(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

2、)依賴關(guān)系;  其中,服務(wù)名稱是標(biāo)識(shí)給服務(wù)的?! ∫訵in2000的C:WINNTSystem32services.exe程序?yàn)槔?,該Exe文件對(duì)應(yīng)一個(gè)ServiceApplication,是該服務(wù)程序的可見實(shí)體;該exe中包含多個(gè)服務(wù)(Service),例如Alerter,Dhcp(DHCPClient),Messenger等。當(dāng)我們結(jié)束一個(gè)服務(wù)的時(shí)候,該服務(wù)所在的ServiceApplication中的其他服務(wù)并沒有被終止?! ≡贒elphi中,Borland的工程師為我們提供了TServiceApplication,TService,TServiceThread等類

3、,封裝了大量細(xì)節(jié),簡(jiǎn)化了服務(wù)程序的開發(fā)。二、TServiceApplication  在Delphi中,類TServiceApplication就對(duì)應(yīng)上述的ServiceApplication。利用Delphi的開發(fā)環(huán)境,我們新建一個(gè)ServiceApplicationProject,同時(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)系?! ⊥ㄟ^閱讀TServiceApplicatio

4、n和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ì)象;在VCLFrameWork中Owner總是負(fù)責(zé)Destroy各個(gè)Component對(duì)象(VCL的TComponent類采用了Composite模式),所

5、以TServiceApplication也將Destroy各個(gè)TService對(duì)象?! ∠旅娓橳ServiceApplication.Run的代碼,可以發(fā)現(xiàn)TServiceApplication首先解析運(yùn)行參數(shù),實(shí)現(xiàn)了服務(wù)的Install和Uninstall。然后,初始化一個(gè)ServiceStartTable數(shù)組,該數(shù)組包含了各個(gè)service對(duì)象的服務(wù)名稱和運(yùn)行入口;最后創(chuàng)建一個(gè)TServiceStartThread對(duì)象,該對(duì)象是一個(gè)線程對(duì)象,從線程調(diào)用API:StartServiceCtrlDispatcher來啟動(dòng)ServiceStartTable中指定的若干個(gè)服務(wù);而S

6、erviceApplication主線程就不斷循環(huán),處理消息,比如接收請(qǐng)求來停止/暫停某個(gè)服務(wù)。三、TService  TService類繼承自類TDataModule,這意味著我們可以加入大量的VCL控件,實(shí)現(xiàn)豐富的功能。此外,我們還可以處理OnStart,OnPause,OnStop,OnContinue,OnCreate,OnShutDown等事件。其中需要說明的是:OnStop表示該服務(wù)被停止;而OnShutDown表示該ServiceApplication停止運(yùn)行,這意味著其他服務(wù)也被終止了;兩者含義是不一樣的。?  前面講過,ServiceApplication通過調(diào)

7、用StartServiceCtrlDispatcher來啟動(dòng)各個(gè)服務(wù)。StartServiceCtrlDispatcher啟動(dòng)TService的入口,該入庫就是TService.Main。TService.Main首先注冊(cè)該服務(wù),然后調(diào)用TService.DoStart。TService.DoStart創(chuàng)建一個(gè)內(nèi)部TServiceThread成員對(duì)象,這是一個(gè)線程對(duì)象;考察TServiceThread.Execute可以得知,當(dāng)我們處理的TService1.OnExecute,那

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。