亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

用Delphi編寫Win2000服務程序

2019-11-18 18:24:05
字體:
來源:轉載
供稿:網友

Delphi編寫Win2000服務程序

 

摘要:本文介紹用Delphi編寫Win2000服務程序,所涉及到的類是TServiceApplicatoin,TService,TServiceThread等。

 

 

關鍵字 Service/服務

 

一、Win2000服務簡介

服務程序(Service application)是一種運行于WinNT的后臺程序,每個服務程序(Service Application)中可能包含若干個服務(Service),每個服務就是其中的一個線程(該服務也可以創建多個子線程)。采用服務,應用程序可以獲得特殊的權限,而且不會被用戶通過Win2000的任務管理器直接結束程序,所以服務常常用來實現一些特殊的目標。

通過Win2000控制面板中的服務管理工具,我們可以設置/查看服務的特性:

1)服務名稱;(2)顯示名稱;(3)描述;(4)啟動類型;(5)依賴關系;

其中,服務名稱是標識給服務的。

Win2000C:/WINNT/System32/services.exe程序為例子,該Exe文件對應一個Service Application,是該服務程序的可見實體;該exe中包含多個服務(Service),例如Alerter,DhcpDHCP Client),Messenger等。當我們結束一個服務的時候,該服務所在的Service Application中的其他服務并沒有被終止。

       Delphi中,Borland的工程師為我們提供了TServiceApplication,TService,TServiceThread等類,封裝了大量細節,簡化了服務程序的開發。

 

二、TServiceApplication

       Delphi中,類TServiceApplication就對應上述的ServiceApplication。利用Delphi的開發環境,我們新建一個Service Application PRoject,同時就創建了一個繼承自TService的類。項目文件中的Application對象就是一個TServiceApplication實例。每個TServiceApplication包含若干個TService對象,正好對應上述的服務程序和服務之間的數量關系。

通過閱讀TServiceApplicationTService類的定義,可以得知,TServiceApplicationTComponent類繼承而來,TService從類TDataModule基礎而來,Application對象負責各個TService對象的CreateDestroy。跟蹤下列代碼

Application.CreateForm(TService1, Service1);

可以發現創建的TService對象的Owner都是Application對象;在VCL FrameWorkOwner總是負責Destroy各個Component對象(VCLTComponent類采用了Composite模式),所以TServiceApplication也將Destroy各個TService對象。

下面跟蹤TServiceApplication.Run的代碼,可以發現TServiceApplication首先解析運行參數,實現了服務的InstallUninstall。然后,初始化一個ServiceStartTable數組,該數組包含了各個service對象的服務名稱和運行入口;最后創建一個TServiceStartThread 對象,該對象是一個線程對象,從線程調用APIStartServiceCtrlDispatcher來啟動ServiceStartTable中指定的若干個服務;而ServiceApplication主線程就不斷循環,處理消息,比如接收請求來停止/暫停某個服務。

 

三、TService

TService類繼承自類 TDataModule,這意味著我們可以加入大量的VCL控件,實現豐富的功能。此外,我們還可以處理OnStart,OnPause,OnStop,OnContinueOnCreate,OnShutDown等事件。其中需要說明的是:OnStop表示該服務被停止;而OnShutDown表示該ServiceApplication停止運行,這意味著其他服務也被終止了;兩者含義是不一樣的。

前面講過,ServiceApplication通過調用StartServiceCtrlDispatcher來啟動各個服務。StartServiceCtrlDispatcher啟動TService的入口,該入庫就是TService.Main。TService.Main首先注冊該服務,然后調用TService.DoStart。TService.DoStart創建一個內部TServiceThread成員對象,這是一個線程對象;考察TServiceThread.Execute可以得知,當我們處理的TService1. OnExecute,那么TService會把所有的請求委托給該TServiceThread成員對象處理,該對象以默認的方式處理所有的請求。

TService. ServiceExecuteTService的主體內容。一個服務要正常運行,除了需要處理它要關注的目標(比如監聽某個端口、執行某個任務等)外,還要響應外部命令/請求:比如終止、暫停、恢復該服務。因此可以考慮創建一個專門的線程來完成該任務,而在ServiceExecute中處理外面命令/請求。因此代碼如下:

       while not Terminated do begin

              ServiceThread.ProcessRequests(False);

       end;

當然,也可以在OnExecute中處理某些任務,如監聽某個端口,但是這常常會導致該Service不能及時響應Stop/Pause等請求。當OnExecute執行完了,該服務實際上就完成了任務要結束了(terminate)。

 

參考資料:

MSDN,Delphi VCL源代碼,Delphi幫助文檔

 


上一篇:用Delphi建立通訊與數據交換服務器—Transceiver技術剖析(上)

下一篇:Delphi例程-應用程序級信息

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩高清a**址| 性日韩欧美在线视频| 91精品国产91久久久久久不卡| 亚洲视频在线播放| 国产精品户外野外| 久久亚洲国产精品成人av秋霞| 中文字幕国产亚洲| 亚洲成色www8888| 91老司机在线| 日韩av一区在线观看| 久久中文字幕在线视频| 亚洲综合小说区| 国产丝袜视频一区| 亚洲激情中文字幕| 欧美理论电影在线播放| 91欧美日韩一区| 另类美女黄大片| 国产精品人成电影| 欧美xxxwww| 亚洲国产小视频| 国产精品一区二区3区| 国产视频在线观看一区二区| 在线丨暗呦小u女国产精品| 久久亚洲精品中文字幕冲田杏梨| 亚洲国内高清视频| 中文字幕一区二区精品| 国产精品自产拍在线观| 亚洲午夜小视频| 最近日韩中文字幕中文| 一区二区在线视频| 久久久久久久久久久久久久久久久久av| 亚洲第一区在线| 欧美电影在线免费观看网站| 国产精品96久久久久久又黄又硬| 亚洲日本中文字幕免费在线不卡| 中日韩午夜理伦电影免费| 青青草国产精品一区二区| 成人深夜直播免费观看| 亚洲bt欧美bt日本bt| 中文字幕亚洲欧美日韩在线不卡| 日韩在线中文视频| 亚洲午夜未满十八勿入免费观看全集| www.午夜精品| 色妞欧美日韩在线| 亚洲成人久久久| 日韩av在线影院| www日韩中文字幕在线看| 国产在线精品播放| 欧美高清视频一区二区| 久久久亚洲福利精品午夜| 亚洲日韩欧美视频| 欧美成人h版在线观看| 久久久久久成人精品| 亚洲色在线视频| 一本色道久久88亚洲综合88| 菠萝蜜影院一区二区免费| 日韩av在线最新| 成人午夜黄色影院| 国产91成人在在线播放| 成人网在线免费看| 国内精品一区二区三区| 色哟哟亚洲精品一区二区| 91日本在线视频| 久久躁狠狠躁夜夜爽| 最好看的2019的中文字幕视频| 欧美电影在线免费观看网站| 中文字幕精品www乱入免费视频| 亚洲自拍偷拍在线| 亚洲在线免费看| 国内精品一区二区三区四区| 欧美一性一乱一交一视频| 午夜精品久久久久久久白皮肤| 精品国产老师黑色丝袜高跟鞋| 久久久久久尹人网香蕉| 国产综合在线视频| 欧美视频在线看| 色爱av美腿丝袜综合粉嫩av| 麻豆国产精品va在线观看不卡| 国产精品电影久久久久电影网| 一本一道久久a久久精品逆3p| 久久电影一区二区| 日韩欧美在线观看视频| www.日韩av.com| 韩剧1988免费观看全集| 成人亚洲激情网| 欧洲亚洲在线视频| 国产精品中文字幕久久久| 亚洲第一免费网站| 成人性生交大片免费看视频直播| 久久精品国产91精品亚洲| 亚洲自拍偷拍视频| 久久精品美女视频网站| 国产日韩亚洲欧美| 国产91亚洲精品| 国产mv免费观看入口亚洲| 成人自拍性视频| 激情成人在线视频| 日韩av在线免费| 91av国产在线| 欧美激情免费观看| 亚洲美女av在线| 亚洲国内高清视频| 97欧美精品一区二区三区| 欧美电影院免费观看| 国产精品亚洲综合天堂夜夜| 成人免费看黄网站| 91国产高清在线| 国产精品久久久久久久久久ktv| 色综合久久中文字幕综合网小说| 欧美成人一二三| 亚洲精品福利免费在线观看| 日韩成人在线视频| 5566成人精品视频免费| 亚洲精品动漫久久久久| 国产精品日韩一区| 日韩欧美国产网站| 欧美中在线观看| 精品视频在线观看日韩| 欧美情侣性视频| 国产日产久久高清欧美一区| 欧美激情奇米色| 91夜夜未满十八勿入爽爽影院| 国产福利视频一区二区| 欧美国产日产韩国视频| 日韩高清电影免费观看完整版| 国产免费一区二区三区在线观看| 色综合天天综合网国产成人网| 伊人久久大香线蕉av一区二区| 日韩精品丝袜在线| 91干在线观看| 国产伦精品一区二区三区精品视频| 亚洲乱码国产乱码精品精天堂| 亚洲视频第一页| 欧美一区二区三区四区在线| 亚洲视频精品在线| 亚洲国产黄色片| 日韩美女写真福利在线观看| 欧美性猛交99久久久久99按摩| 亚洲欧洲国产一区| 久久久999精品视频| 中文字幕在线观看日韩| 欧美日韩成人在线播放| 91亚洲国产成人久久精品网站| 亚洲成人免费网站| 疯狂做受xxxx高潮欧美日本| zzjj国产精品一区二区| 国产mv免费观看入口亚洲| 亚洲色图激情小说| 欧美精品福利在线| 亚洲国产日韩精品在线| 国产99久久精品一区二区永久免费| 久久777国产线看观看精品| 亚洲偷熟乱区亚洲香蕉av| 日本欧美在线视频| 色偷偷av一区二区三区| 久久97久久97精品免视看| 亚洲国产日韩精品在线| 亚洲综合中文字幕在线观看| 91久久中文字幕| 亚洲欧美制服中文字幕| 成人午夜小视频| 成人福利网站在线观看| 成人夜晚看av| 日本久久久久久久久久久|