Delphi:注冊表構(gòu)件的應(yīng)用
發(fā)布時(shí)間:2008-08-22 閱讀數(shù): 次 來源:網(wǎng)樂原科技
在Delphi3.0及以上版本中,提供了一個(gè)構(gòu)件Tregistry。在程序中可以利用它來實(shí)現(xiàn)對WIN 95/98/NT注冊表的操作,可以很方便地在注冊表中增加、修改和刪除鍵值.這樣可以在程序中完成一些特殊的功能。
TRegistry常用的屬性和方法有(具體作用和用法請參考Delphi幫助):
RootKey、CreateKey、OpenKey、CloseKey、DeleteKey、
ReadXXXX、WriteXXXX(XXXX表示數(shù)據(jù)類型如String、Integer等)
我們用到的屬性和方法有:
RootKey:注冊表的根鍵名(如HKEY_LOCAL_MACHINE等)
OpenKey( KeyName:string; CanCreate:boolean ):
使當(dāng)前鍵為KeyName,CanCreate表示當(dāng)指定的鍵不存在時(shí)是否創(chuàng)建,True表示創(chuàng)建
SetKey( KeyName,KeyValue : string ):使鍵KeyName的值為KeyValue
應(yīng)用之一:讓自己的程序隨WIN95/98/NT的啟動(dòng)而運(yùn)行
當(dāng)然,你可以在"啟動(dòng)"程序組中加入程序的快捷方式,但這樣做好像不大明智,因?yàn)榇蠖鄶?shù)程序在安裝時(shí)不會這樣做,而通過在注冊表增加鍵值,讓W(xué)IN 95/98/NT在啟動(dòng)時(shí)運(yùn)行自己的程序.如果打開注冊表,找到HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run,就會發(fā)
現(xiàn)這個(gè)秘密了,原來許多自動(dòng)運(yùn)行的程序都在這里.你也可以在這里增加一個(gè)鍵,讓你的程序也隨著WIN95/98/NT的啟動(dòng)而自己運(yùn)行,成為WINDOWS下的TSR程序.實(shí)現(xiàn)方法如下:
首先,在Uses中加上Registry單元。然后,寫下面代碼.
{ 將程序strExeFileName置為自動(dòng)啟動(dòng) }
function StartUpMyProgram( strPrompt,strExeFileName : string ) : boolean;
var
registerTemp : TRegistry;
begin
registerTemp := TRegistry.Create; //建立一個(gè)Registry實(shí)例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;//設(shè)置根鍵值為HKEY_LOCAL_MACHINE
//找到Software\Microsoft\Windows\CurrentVersion\Run
if OpenKey('Software\Microsoft\Windows\CurrentVersion\Run',True) then
//寫入自己程序的快捷方式信息
begin
WriteString( strPrompt, strExeFileName );
result := true;
end
else result := false;
//善后處理
CloseKey;
Free;
end;
end;
{ 調(diào)用StartUpMyProgram,使Delphi隨WINDOWS啟動(dòng)而自動(dòng)運(yùn)行 }
procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.lines.add('開始');
if StartUpMyProgram('delphi','C:\Program Files\borland\delphi3\bin\delphi32.exe') then
memo1.lines.add('成功')
else
memo1.lines.add('失敗')
end;
應(yīng)用之二:實(shí)現(xiàn)文件關(guān)聯(lián)
當(dāng)MS WORD安裝在你的系統(tǒng)中時(shí),它會把.DOC文件與自己關(guān)聯(lián),當(dāng)你雙擊一個(gè)DOC文件,就會啟動(dòng)MS WORD,打開你指定的DOC文件.你也可以把一個(gè)文件類型與一個(gè)程序關(guān)聯(lián)起來,其秘密還是在注冊表中.如果打開注冊表,找到HKEY_CLASSES_ROOT,就會發(fā)現(xiàn)這里已經(jīng)有很多文件類型。你也可以在這里增加一個(gè)鍵,建立自己的文件關(guān)聯(lián).
建立文件關(guān)聯(lián),一般應(yīng)有兩個(gè)步驟:
(1)根據(jù)文件類型的擴(kuò)展名,指定對應(yīng)的鍵名(如doc文件對應(yīng)的鍵為doc_auto_file),該鍵及其子鍵的值,將定義該類型的文件的類型說明和操作(如打開、編輯)說明。
(2)在指定的鍵名下,建立子鍵,指明文件類型說明和操作對應(yīng)的程序信息
例如,我們可以為.DBF文件建立文件關(guān)聯(lián),其文件類型說明為"xBase數(shù)據(jù)表",使其打開(Open)文件的操作對應(yīng)程序C:\Program Files\Borland\DBD\DBD32.EXE.首先,應(yīng)在注冊表的根鍵HKEY_CLASSES_ROOT下建立一個(gè)鍵,鍵名為.DBF,默認(rèn)值為DBF_Auto_File,表示DBF類型文件的關(guān)聯(lián)操作信息記錄在鍵HKEY_CLASSES_ROOT\DBF_Auto_File下;然后,建立鍵HKEY_CLASSES_ROOT\DBF_Auto_File,并設(shè)其默認(rèn)值為"xBase數(shù)據(jù)表",表示文件類型說明;再建立鍵HKEY_CLASSES_ROOT\DBF_Auto_File\Shell\open\command,設(shè)置其默認(rèn)值為C:\Program Files\Borland\DBD\DBD32.EXE %1(其中"%1"為命令行參數(shù)),表示打開操作對應(yīng)的程序信息。
具體實(shí)現(xiàn)如下:
同樣,在Uses中加上Registry單元,然后,寫下面代碼.
{ 將文件類型strFileExtension與程序strExeFileName相關(guān)聯(lián),strDiscription為文件類型說明 }
function AssignToProgram( strFileExtension,strDiscription,strExeFileName : string ) : boolean;
var
registerTemp : TRegistry;
begin
registerTemp := TRegistry.Create; //建立一個(gè)Registry實(shí)例
with registerTemp do
begin
RootKey:=HKEY_CLASSES_ROOT;//設(shè)置根鍵值為HKEY_CLASSES_ROOT