久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

delphi怎樣編寫服務(wù)程序-Service Application,編好了怎么安裝這個服...

 【狗尾巴草】 2011-02-28
運(yùn)用Delphi編寫Windows   NT中服務(wù)程序     


  Windows   NT服務(wù)程序不同于一般的運(yùn)行程序,,它不需要NT登錄進(jìn)去,,只需要開機(jī)進(jìn)入NT系統(tǒng)便可以運(yùn)行,一般用于系統(tǒng)服務(wù)方面的應(yīng)用,,學(xué)會編寫NT服務(wù)程序?qū)W(wǎng)絡(luò)管理人員而言是非常重要的,,Delphi作為一種高效、快速,、強(qiáng)大的開發(fā)語言,,為開發(fā)NT服務(wù)程序提供了非常便捷的方法,加上其可視化界面以及與數(shù)據(jù)庫的完美結(jié)合,,使我們開發(fā)與數(shù)據(jù)庫有關(guān)的NT服務(wù)程序變得非常簡單,,下面以編寫一個NT定期備份程序為例,介紹如何運(yùn)用Delphi編寫Windows   NT的服務(wù)程序,。  
  打開Delphi編輯器,,選擇菜單中的File|New,在New   Item中選擇Service   Application項,,Delphi便自動為你建立一個基于TServiceApplication的新工程,,TServiceApplication是一個封裝NT服務(wù)程序的類,它包含一個TService1對象以及服務(wù)程序的裝卸,、注冊,、取消方法。  
  將TService1對象的屬性做下列更改:  
  DisplayName與Name改為:DataBackup,,ServiceStartName屬性改為系統(tǒng)管理員用戶(如DOMAIN\Administrator)和Password則輸入用戶密碼
  這樣,,服務(wù)程序運(yùn)行時將自己以該用戶的權(quán)限操作NT。  
  這樣,,一個NT服務(wù)程序編寫已經(jīng)完成,,在Delphi編輯器中選擇菜單Run|Parameters,在Parameters中輸入/install,,程序編譯運(yùn)行后,,一個名為DataBackup的NT服務(wù)程序已經(jīng)安裝好,,你可以雙擊控制面板中的服務(wù)項目,將會看到此服務(wù)程序,,只是此服務(wù)程序沒有任何東西而已,;在Delphi編輯器中選擇菜單Run|Parameters,在Parameters中輸入/uninstall,,程序編譯運(yùn)行后,,系統(tǒng)將會將此服務(wù)程序卸掉。  
  服務(wù)程序是通過控制一個線程的生成,、暫停,、繼續(xù)、停止來達(dá)到服務(wù)目的的,,因此我們必須加入一個TSession對象來編寫文件自動備份代碼,,在Delphi編輯器中選擇菜單中的File|New,在New   Item中選擇Thread   Object項,,Delphi會提示你為該TSession對象輸入一個名稱(輸入DataCopy),Delphi便生成了一個基于TSession的DataCopy對象,,并提供了一個Execute過程供重載,我們要Execute過程中輸入以下程序:  
var
Hour,   Min,   Sec,   MSec:   Word;
TimeStamp,   DirectoryEdit1,   DirectoryEdit2:   String;
SearchRec:   TSearchRec;
Source,   Temp,   Dest:   Pchar;
F,   F1:   THandle;
FF,   FF1:   WIN32_FIND_DATA;
Begin  

//   每次文件備份執(zhí)行時間
TimeStamp:=   '12:00 ';

//   文件備份源目錄
DirectoryEdit1:=   'C:\temp ';

//   文件備份目錄
DirectoryEdit2:=   'C:\temp1 ';
While   True   do
Begin
DecodeTime(Time,   Hour,   Min,   Sec,   MSec);
IF   Trim(TimeStamp)   =   Format( '%-2.2d:%-2.2d ',[Hour,   Min])   then
Begin
GetMem(Source,   250);
GetMem(Dest,   250);
GetMem(Temp,   250);
StrPcopy(Dest,   DirectoryEdit2   +   '\ '   +   FormatDateTime( 'YYYYMMDD ',   Date));
CreateDirectory(Dest,   Nil);
IF   FindFirst(DirectoryEdit1   +   '\*.* ',   faAnyFile,   SearchRec)   =   0   then
Begin
Repeat
StrPcopy(Source,   DirectoryEdit1   +   '\ '   +   SearchRec.Name);
StrPcopy(Dest,   DirectoryEdit2+ '\ '   +   FormatDateTime( 'YYYYMMDD ',   Date)   +   '\ '   +   SearchRec.Name);
CopyFile(Source,   Dest,   False);
Until   FindNext(SearchRec)   <>   0;
end;
SysUtils.FindClose(SearchRec);
FindClose(F);
FreeMem(Source,   250);
FreeMem(Dest,   250);
FreeMem(Temp,   250);
end;
Sleep(60000);
end;
end;
  此線程執(zhí)行時每隔一分鐘將檢查一次時間,,看是否到了備份時間,,如果是則將DirectoryEdit1中的所有文件拷到DirectoryEdit2目錄中去。  
  現(xiàn)在編寫服務(wù)控制DataCopy線程的代碼,,在TdataBackup對象中的OnStart,、OnStop、OnPause,、OnContinue事件中分別輸入如下代碼:  
Procedure   TDataBackup.DataBackupStart(Sender:   TService;
var   Started:   Boolean);
begin
DataThread:=   TDataCopy.Create(False);
Started   :=   True;
end;

procedure   TDataBackup.DataBackupStop(Sender:   TService;
var   Stopped:   Boolean);
begin
DataThread.Terminate;
Stopped   :=   True;
end;

procedure   TDataBackup.DataBackupPause(Sender:   TService;
var   Paused:   Boolean);
begin
DataThread.Suspend;
Paused   :=   True;
end;

procedure   TDataBackup.DataBackupContinue(Sender:   TService;
var   Continued:   Boolean);
begin
DataThread.Resume;
Continued   :=   True;
end;
  這樣一個文件自動備份程序已經(jīng)完成,,編譯好后,加上/install參數(shù)執(zhí)行程序,,系統(tǒng)會將此服務(wù)程序安裝,,由于服務(wù)程序中StartType屬性為stAuto,NT每次啟動時,,此程序自動執(zhí)行,,你可以在控制面板中的服務(wù)項目來啟動、暫停,、恢復(fù),、停止它,也可以加上/uninstall參數(shù)執(zhí)行程序來卸掉它,。通過上述例子我們可以看到,,用Delphi編寫NT服務(wù)器程序十分方便,,而且你也可以在TService對象上加許多非可視化控件來與數(shù)據(jù)庫關(guān)聯(lián),,實(shí)現(xiàn)很多復(fù)雜的功能,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多