




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、-作者xxxx-日期xxxxdelphi串口操作大全【精品文檔】32位Delphi程序中可利用TRegistry對(duì)象來存取注冊(cè)表文件中的信息。 一、創(chuàng)建和釋放TRegistry對(duì)象 1.創(chuàng)建TRegistry對(duì)象。為了操作注冊(cè)表,要?jiǎng)?chuàng)建一個(gè)TRegistry對(duì)象:ARegistry := TRegistry.Create; 2.釋放TRegistry對(duì)象。對(duì)注冊(cè)表操作結(jié)束后,應(yīng)釋放TRegistry對(duì)象所占內(nèi)存:ARegistry.Destroy。 二、指定要操作的鍵 操作注冊(cè)表時(shí),首先應(yīng)指定操作的主鍵:先給屬性RootKey賦值以指定根鍵,然后用方法OpenKey來指定要操作的主鍵名。 1.
2、指定根鍵(RootKey)。 根鍵是注冊(cè)表的入口,也注冊(cè)表信息的分類,其值可為: HKEYCLASSESROOT:存儲(chǔ)整個(gè)系統(tǒng)對(duì)象類信息,如ActiveX對(duì)象注冊(cè)、文件關(guān)聯(lián)等信息。 HKEYCURRENTUSER:存儲(chǔ)當(dāng)前用戶的配置信息。為屬性RootKey的默認(rèn)值。 HKEYLOCALMACHINE:存儲(chǔ)當(dāng)前系統(tǒng)的軟硬件配置信息。應(yīng)用程序自己的信息可以存儲(chǔ)在該根鍵下。 HKEYUSERS:存儲(chǔ)所有用戶通用的配置信息。 還可以是HKEYCURRENTCONFIG、HKEYDYNDATA。 2.指定要操作的主鍵。 Function OpenKey(const Key: string; CanCr
3、eate: Boolean): Boolean; Key:主鍵名,是鍵名全名中除去根鍵的部分,如SoftwareBorlandDelphi。 CanCreate:在指定的主鍵名不存在時(shí),是否允許創(chuàng)建該主鍵,True表示允許。 返回值True表示操作成功。 3.關(guān)閉當(dāng)前主鍵。 在讀取或存儲(chǔ)信息之后,應(yīng)及時(shí)將關(guān)閉當(dāng)前主鍵:procedure CloseKey。 三、從注冊(cè)表中讀取信息 Read系列方法從注冊(cè)表讀取指定的信息(字符串、二進(jìn)制和十六進(jìn)制),并轉(zhuǎn)換為指定的類型。 1.Read系列方法。 function ReadString(const Name: string): string; 讀取
4、一個(gè)字符串值,Name為字符串名稱。 function ReadInteger(const Name: string): Integer; 讀取一個(gè)整數(shù)值,Name為整數(shù)名稱。 function ReadBinaryData(const Name: string; var Buffer; BufSize: Integer):Integer; 讀取二進(jìn)制值,Name為二進(jìn)制值名稱,Buffer為接收緩沖區(qū),BufSize為緩沖區(qū)大小,返回為實(shí)際讀取的字節(jié)數(shù)。 其它方法還有:ReadBool、ReadCurrency、ReadDate、ReadDateTime、ReadFloat、ReadTime
5、。 2.讀取信息一例(顯示W(wǎng)indows的版本)。 在HKEYLOCALMACHINESoftwareMicrosoftWindowsCurrentVersion下,有三個(gè)字符串值Version、VersionNumber和SubVersionNumber,用于記錄當(dāng)前Windows的版本號(hào)。 請(qǐng)?jiān)赨ses中包含Registry單元 procedure TForm1.Button1Click(Sender:TObject); var ARegistry : TRegistry; begin ARegistry := TRegistry.Create; /建立一個(gè)TRegistry實(shí)例 with
6、 ARegistry do begin RootKey := HKEYLOCALMACHINE;/指定根鍵為HKEYLOCALMACHINE /打開主鍵SoftwareMicrosoftWindowsCurrentVersion if OpenKey( SoftwareMicrosoftWindowsCurrentVersion,false ) then begin memo1.lines.add(Windows版本: ReadString(Version); memo1.lines.add(Windows版本號(hào): ReadString(VersionNumber); memo1.lines.
7、add(Windows子版本號(hào): ReadString(SubVersionNumber); end; CloseKey;/關(guān)閉主鍵 Destroy;/釋放內(nèi)存 end; end; 四、向注冊(cè)表中寫入信息 Write系列方法將信息轉(zhuǎn)化為指定的類型,并寫入注冊(cè)表。 1.Write系列方法。 procedure WriteString(const Name, Value: string); 寫入一個(gè)字符串值,Name為字符串的名稱,Value為字符串值。 procedure WriteInteger(const Name: string; Value: Integer); 寫入一個(gè)整數(shù)值。 pro
8、cedure WriteBinaryData(const Name: string; var Buffer; BufSize: Integer); 寫入二進(jìn)制值,Name為二進(jìn)制值的名稱,Buffer為包含二進(jìn)制值的緩沖區(qū),BufSize為緩沖區(qū)大小。 其它方法還有:WriteBool、WriteCurrency、WriteDate、WriteDateTime、WriteFloat、WriteTime。 2.寫入信息一例。 下面程序使Delphi隨Windows啟動(dòng)而自動(dòng)運(yùn)行。 var ARegistry : TRegistry; begin ARegistry := TRegistry.Cr
9、eate; /建立一個(gè)TRegistry實(shí)例 with ARegistry do begin RootKey:=HKEYLOCALMACHINE; if OpenKey(SoftwareMicrosoftWindowsCurrentVersionRun,True) then WriteString(delphi,); CloseKey; Destroy; end; end; 五、鍵值維護(hù) 除了在注冊(cè)表中讀取、存儲(chǔ)外,程序可能還需要增加主鍵、刪除主鍵、主鍵改名、數(shù)據(jù)值改名等。 1.創(chuàng)建新主鍵:function CreateKey(const Key: string): Boolean。 Key即
10、為主鍵名,返回值True表示操作成功。 2.刪除主鍵:function DeleteKey(const Key: string): Boolean。 Key即為主鍵名,返回值True表示操作成功。 3.復(fù)制或移動(dòng)主鍵:procedure MoveKey(const OldName, NewName: string; Delete: Boolean)。 OldName、NewName分別表示源主鍵名和目標(biāo)主鍵名;Delete表示是否刪除源主鍵,True表示刪除,F(xiàn)alse表示保留。 復(fù)制或移動(dòng)一個(gè)主鍵將復(fù)制或移動(dòng)該子鍵下的所有數(shù)據(jù)值和子鍵內(nèi)容。 4.判斷指定主鍵是否存在,其下是否有主鍵,并獲取主
11、鍵名稱。 KeyExists用于判斷指定主鍵是否存在: function KeyExists(const Key: string): Boolean;/返回值為True表示主鍵存在。 HasSubKeys用于判斷指定主鍵下是否有子鍵:function HasSubKeys: Boolean; 返回值為True表示主鍵下有子鍵。 GetKeyNames用于獲取子鍵名稱:procedure GetKeyNames(Strings: TStrings); Strings用于返回當(dāng)前主鍵下各子鍵的名稱。 5.獲取主鍵下的數(shù)據(jù)值名稱:procedure GetValueNames(Strings: TS
12、trings)。 Strings用于返回當(dāng)前主鍵下各數(shù)值名稱。 如要獲取當(dāng)前系統(tǒng)中的撥號(hào)連接名稱,可利用獲取主鍵HKEYUSERS .DEFAULTRemoteAccessAddresses下的數(shù)值名稱的方法來進(jìn)行。 6.判斷數(shù)值名稱存在、數(shù)值名稱改名。 ValueExists用于判斷數(shù)值名稱是否存在: function ValueExists(const Name: string): Boolean; 返回值為True表示數(shù)值名稱存在。RenameValue用于數(shù)值名稱改名: procedure RenameValue(const OldName, NewName: string); 以上是
13、注冊(cè)表常用操作所對(duì)應(yīng)的TRegistry的方法和屬性,其它方法和屬性請(qǐng)參見Delphi聯(lián)機(jī)幫助文件。 以上程序在PWIN 98Delphi 3.0下調(diào)試通過。 2003-11-20 11:53:00 發(fā)表評(píng)語»»» 2003-11-20 11:59:20 注冊(cè)表中對(duì)編程常用的幾項(xiàng)(ODBC/BDE/Internet/Windows) 我用的是 WINDOWS 2000, WIN2000 的 REGEDIT 提供了類似 IE 中收藏夾的功能,我的收藏夾中有幾個(gè)或許對(duì)大家編程時(shí)會(huì)有幫助(這是本人在編程過程中的探索出來的,請(qǐng)高手指教):1。關(guān)于 ODBC 和 DB
14、E: HKEY_LOCAL_MACHINESOFTWAREODBCODBC.INIODBC File DSN 有你的 COMPUTER 上 ODBC 的 FILE DSN 的存放的缺省路徑,如果你建立 FILE DSN 的時(shí)候選擇了自己的路徑,那你就得小心了,系統(tǒng)不會(huì)為你保存該路徑,你的自己記住它,:-(; HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIODBC Drivers 列出了你的所有 ODBC DRIVER, 關(guān)于 ODBC DRIVER 的名稱,有一個(gè)比較有趣的地方:不知大家又沒有用TSession.GetDriverNames 取過系統(tǒng) OD
15、BC DRIVER 名,我用的時(shí)候 DRIVER 名最長只能取到 31 個(gè)字符,剩下的就被截掉了,不知是我編程有問題還是 DELPHI 的 BUG; HKEY_LOCAL 列出了你的所有 ODBC DRIVER 的詳細(xì)配置; 列出了你的所有 SYSTEM DSN 以及它們的配置情況; 列出了你的所有 USER DSN 以及它們的配置情況; 知道了以上的幾個(gè)主鍵后,你就可以在程序中實(shí)現(xiàn) %SystemRoot%system32odbcad32.exe 的大部分功能了。 HKEY_LOCAL_MACHINESOFTWAREBorlandDatabase Engine 下面是你的 DBE 的配置,我
16、就不多說了,大家拿它和 BDE 用戶界面一比較就明白了。 2。關(guān)于 INTERNET 編程: HKEY_CLASSES_ROOThtmlfile 系統(tǒng)對(duì) HTMLFILE 的處理定義; HKEY_LOCAL_MACHINESOFTWAREClients INTERNET Option 中 INTERNET PROGRAM 的設(shè)定,尤其重要的是其中的 HKEY_LOCAL_MACHINESOFTWAREClientsMail。3。關(guān)于 WINDOWS 編程 HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRun每次該用戶啟動(dòng) WIND
17、OWS 必定執(zhí)行下面的命令(如果有,當(dāng)然一般都有), HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionRunonce 該用戶啟動(dòng) WINDOWS 必定執(zhí)行下面的命令(如果有),執(zhí)行完后由 WINDOWS 把命令刪掉,安裝軟件的時(shí)候特別有用, 以上兩處是針對(duì)特定用戶的,在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersion 下還有類似的地方,是針對(duì)所有用戶的,我就不羅嗦了。 2003-11-20 12:16:38 Delphi 中注冊(cè)表構(gòu)件TRegistry 的應(yīng)用 在Del
18、phi3.0 及以上版本中,提供了一個(gè)構(gòu)件TRegistry。在程序中可以利用它來實(shí)現(xiàn)對(duì)WIN95/98/NT 注冊(cè)表的操作,可以很方便地在注冊(cè)表中增加、修改和刪除鍵值。這樣可以在程序中完成一些特殊的功能。 - TRegistry 常用的屬性和方法有(具體作用和用法請(qǐng)參考Delphi 幫 助): RootKey、CreateKey、OpenKey、CloseKey、DeleteKey、ReadXXXX、WriteXXXX (XXXX表示數(shù)據(jù)類型如String、Integer等) 我們用到的屬性和方法有: RootKey:注冊(cè)表的根鍵名( 如HKEY_LOCAL_MACHINE等) OpenKe
19、y( 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í)不會(huì)這樣做,而是在通過在注冊(cè)表增加鍵值,讓W(xué)IN95/98/NT 在啟動(dòng)時(shí)運(yùn)行自己的程序。如果打開注冊(cè)表,找到HKEY_LOCAL_MACHINE Sof
20、tware MicrosoftWindows CurrentVersion Run,就會(huì)發(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;b
21、egin registerTemp := TRegistry.Create; /建立一個(gè)Registry實(shí)例 with registerTemp do begin RootKey:=HKEY_LOCAL_MACHINE; /設(shè)置根鍵值為HKEY_LOCAL_MACHINE /找到SoftwareMicrosoftWindowsCurrentVersionRun if OpenKey(SoftwareMicrosoftWindowsCurrentVersionRun,True) then /寫入自己程序的快捷方式信息 begin WriteString( strPrompt, strExeFil
22、eName ); 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 Filesborlanddelphi3bindelphi32.exe) then memo1.lines.add(成功) else
23、memo1.lines.add(失敗)end;- 應(yīng)用之二:實(shí)現(xiàn)文件關(guān)聯(lián) 當(dāng)MS WORD 安裝在你的系統(tǒng)中時(shí),它會(huì)把.DOC 文件與自己關(guān)聯(lián),當(dāng)你雙擊一個(gè)DOC 文件,就會(huì)啟動(dòng)MS WORD,打開你指定的DOC文件。你也可以把一個(gè)文件類型與一個(gè)程序關(guān)聯(lián)起來,其秘密還是在注冊(cè)表中。如果打開注冊(cè)表,找到HKEY_CLASSES_ROOT,就會(huì)發(fā)現(xiàn)這里已經(jīng)有很多文件類型。 你也可以在這里增加一個(gè)鍵,建立自己的文件關(guān)聯(lián)。 建立文件關(guān)聯(lián),一般應(yīng)有兩個(gè)步驟: ()根據(jù)文件類型的擴(kuò)展名,指定對(duì)應(yīng)的鍵名(如doc 文件對(duì)應(yīng)的鍵為doc_auto_file) 該鍵及其子鍵的值,將定義該類型的文件的類型說明和操
24、作(如打開、編輯)說明 ()在指定的鍵名下,建立子鍵,指明文件類型說明和操作對(duì)應(yīng)的程序信息 例如,我們可以為.DBF 文件建立文件關(guān)聯(lián),其文件類型說明為xBase 數(shù)據(jù)表,使其打開(Open)文件的操作對(duì)應(yīng)程序C:ProgramFilesBorlandDBDDBD32.EXE。首先,應(yīng)在注冊(cè)表的根鍵HKEY_CLASSES_ROOT 下建立一個(gè)鍵,鍵名為.DBF,默認(rèn)值為DBF_Auto_File,表示DBF 類型文件的關(guān)聯(lián)操作信息記錄在鍵HKEY_CLASSES_ROOTDBF_Auto_File 下;然后,建立鍵HKEY_CLASSES_ROOTDBF_Auto_File,并設(shè)其默認(rèn)值為x
25、Base 數(shù)據(jù)表,表示文件類型說明;再建立鍵HKEY_CLASSES_ROOTDBF_Auto_FileShellopencommand,設(shè)置其默認(rèn)值為C:Program FilesBorlandDBDDBD32.EXE %1(其中%1 為命令行參數(shù)),表示打開操作對(duì)應(yīng)的程序信息。 具體實(shí)現(xiàn)如下:同樣,在Uses 中加上Registry 單元, 然后,寫下面代碼。 將文件類型strFileExtension與程序strExeFileName相關(guān)聯(lián),strDiscription為文件類型說明 function AssignToProgram(strFileExtension,strDiscrip
26、tion,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 /根據(jù)文件類型的擴(kuò)展名,創(chuàng)建或打開對(duì)應(yīng)的鍵名.FileExt,如DBF對(duì)應(yīng).DBF if OpenKey( . + strFileExtension, true ) then begin
27、result := false; exit; end; /設(shè)置鍵.FileExt默認(rèn)值為FileExt_Auto_File,如.DBF對(duì)應(yīng)DBF_Auto_File WriteString(,strFileExtension + _Auto_File); CloseKey; /寫入自己程序的信息 /根據(jù)文件類型的擴(kuò)展名,創(chuàng)建或打開對(duì)應(yīng)的鍵名 FileExt_Auto_File /.DBF對(duì)應(yīng)DBF_Auto_File if OpenKey(strFileExtension + _Auto_File, true ) then begin result := false; exit; end; /
28、設(shè)置默認(rèn)值文件類型說明,如DBF可對(duì)應(yīng)xBase數(shù)據(jù)表 WriteString(,strDiscription); CloseKey; /創(chuàng)建或打開鍵名FileExt_Auto_FileShellopencommand,該鍵為表示操作為打開 /.DBF對(duì)應(yīng)DBF_Auto_Fileshellopencommand if OpenKey(strFileExtension + _Auto_Fileshellopencommand, true ) then begin result := false; exit; end; /設(shè)置該鍵的默認(rèn)值為打開操作對(duì)應(yīng)的程序信息 /如DBF可對(duì)應(yīng)C:Progra
29、m FilesBorlandDBDDBD32.EXE WriteString(,strExeFileName + %1); CloseKey; Free; end;end;調(diào)用AssignToProgram,使DBF文件與DBD32.EXE關(guān)聯(lián) on3Click(Sender: TObject);begin memo1.lines.add(開始); if AssignToProgram(DBF,xBase數(shù)據(jù)表,C:Program Filesborlanddbddbd32.exe) then memo1.lines.add(成功) else memo1.lines.add(失敗)end;- 應(yīng)
30、用之三:檢測Win95/98/NT 系統(tǒng)中是否安裝了Borland Database Engine 當(dāng)你的應(yīng)用程序是一個(gè)基于BDE 的數(shù)據(jù)庫應(yīng)用程序時(shí),如果運(yùn)行在一個(gè)沒有安裝BDE 的Win95/98/NT 中,會(huì)出現(xiàn)讓用戶迷惑不解的錯(cuò)誤。你可能需要在程序正常運(yùn)行之前,檢查系統(tǒng)中是否安裝了BDE。由于 BDE 安裝后會(huì)在注冊(cè)表進(jìn)行注冊(cè),你可以通過查詢注冊(cè)表來確定系統(tǒng)中是否安裝了BDE,然后決定下一步采取什么行動(dòng)。BDE 在注冊(cè)表中的位置為: HKEY_LOCAL_MACHINESoftwareBorlandDatabase Engine,該鍵存在說明 BDE 已經(jīng)安裝。 具體的例子如下。 同樣
31、,在Uses 中加上Registry 單元 然后,寫下面代碼。 檢測系統(tǒng)中是否安裝了BDE function IsBDEInstalled : boolean;var registerTemp : TRegistry;begin registerTemp := TRegistry.Create; /建立一個(gè)Registry實(shí)例 with registerTemp do begin RootKey:=HKEY_LOCAL_MACHINE; /設(shè)置根鍵值為HKEY_LOCAL_MACHINE /查詢SoftwareBorlandDatabase Engine result := OpenKey(S
32、oftwareBorlandDatabase Engine,false); /善后處理 CloseKey; Free; end;end;調(diào)用IsBDEInstalled,檢測系統(tǒng)中是否安裝了BDE procedure TForm1.Button4Click(Sender: TObject);begin memo1.lines.add(開始); if IsBDEInstalled then memo1.lines.add(已安裝了BDE) else memo1.lines.add(未安裝BDE)end;- 應(yīng)用之四:在桌面建立程序的快捷方式 當(dāng)你的WIN95/98/NT 桌面上整齊地排列著各種程
33、序的快捷方式時(shí),也許你會(huì)體會(huì)到快捷方式的方便。你也可將自己設(shè)計(jì)的程序的快捷方式放在別人的桌面上。 桌面上的一個(gè)快捷方式,對(duì)應(yīng)Windows 目錄下Destop 子目錄中的一個(gè)ShellLink 文件(.LNK),你只要在這個(gè)目錄下增加一個(gè).LNK 文件就可以了。 我們的任務(wù),主要是利用TRegistry 從注冊(cè)表中獲取Desktop 的實(shí)際路徑,默認(rèn)為Windows 目錄下的Desktop 子目錄,如C:PWIN98Desktop。在注冊(cè)表中Desktop 的實(shí)際路徑對(duì)應(yīng)的鍵為HKEY_CURRENT_USER SoftwareMicroSoft Windows CurrentVersion
34、Explorer Shell Folders Desktop。 同樣,在Uses 中加上Registry 單元 然后,寫下面代碼。 為程序strExeFileName在桌面建立快捷方式,運(yùn)行參數(shù)為strParameters function CreateShortcutOnDesktop( strExeFileName, strParameters : string ) : boolean;var registerTemp : TRegistry; strDesktopDirectory : widestring; shelllinkTemp : IShellLink; persistfile
35、Temp : IPersistFile;begin registerTemp := TRegistry.Create; /建立一個(gè)Registry實(shí)例 with registerTemp do begin RootKey:=HKEY_CURRENT_USER; /設(shè)置根鍵值為HKEY_CURRENT_USER /找到SoftwareMicroSoftWindowsCurrentVersionExplorerShell Folders if not OpenKey(SoftwareMicroSoftWindowsCurrentVersionExplorerShell Folders,True)
36、then /寫入自己程序的信息 begin result := false; exit; end; /讀取項(xiàng)目Desktop的值,即Desktop的實(shí)際路徑 strDesktopDirectory := ReadString(Desktop); /善后處理 CloseKey; Free; end; /設(shè)置快捷方式的參數(shù) shelllinkTemp := IShellLink( CreateComObject(CLSID_ShellLink); with shelllinkTemp do begin SetPath( PChar( strExeFileName ) ); /設(shè)置程序文件全名 Se
37、tArguments( PChar( strParameters) ); /設(shè)置程序的命令行參數(shù) /設(shè)置程序的工作目錄 SetWorkingDirectory( Pchar( ExtractFilePath( strExeFileName ) ) ); end; /構(gòu)造快捷方式的文件名(.LNK) strDesktopDirectory := strDesktopDirectory + + ExtractFileName( strExeFileName ); strDesktopDirectory := copy( strDesktopDirectory, 1, length( strDesk
38、topDirectory ) - length( ExtractFileExt( strExeFileName ) ) ) + .LNK; /保存快捷方式的文件 persistfileTemp := shelllinkTemp as IPersistFile; if S_OK = persistfileTemp.Save( PWChar( strDesktopDirectory ) , false ) then result := true /保存成功,返回True else result := false;end;調(diào)用CreateShortcutOnDesktop,為Delphi在桌面上建立
39、快捷方式 procedure TForm1.Button2Click(Sender: TObject);begin memo1.lines.add(開始); if CreateShortcutOnDesktop(C:Program Filesborlanddelphi3bindelphi32.exe,%1) then memo1.lines.add(成功) else memo1.lines.add(失敗)end;【結(jié)語】:上面幾個(gè)應(yīng)用只是TRegistry 一些簡單的應(yīng)用,有了這些知識(shí),你就可以根據(jù)自己的需要來定制和改善Winodws 系統(tǒng)了。 - 以上程序在PWin98+Delphi3.0
40、下調(diào)試和通過。 2003-11-20 12:21:25 備份部分注冊(cè)表的代碼Procedure ExportRegistryBranch (rootsection : Integer; regroot:String; filename:String);implementationFunction dblBackSlash(t:string):string;var k:longint;begin result:=t; Strings are not allowed to have for k:=length(t) downto 1 do single backslashes if resultk
41、= then insert(,result,k);end;Procedure ExportRegistryBranch (rootsection : Integer; regroot:String; filename:String);var reg:tregistry; f:textfile; p:PCHAR; Procedure ProcessBranch(root:string); recursive sub-procedure var values, keys:tstringlist; i,j,k:longint; s,t:string; longstrings are on the h
42、eap, not on the stack! begin writeln(f); write blank line case rootsection of HKEY_CLASSES_ROOT : s := HKEY_CLASSES_ROOT; HKEY_CURRENT_USER : s := HKEY_CURRENT_USER; HKEY_LOCAL_MACHINE : s := HKEY_LOCAL_MACHINE; HKEY_USERS : s := HKEY_USERS; HKEY_PERFORMANCE_DATA: s := HKEY_PERFORMANCE_DATA; HKEY_CU
43、RRENT_CONFIG : s := HKEY_CURRENT_CONFIG; HKEY_DYN_DATA : s := HKEY_DYN_DATA; end; Writeln(f,+s+root+); write section name in brackets reg.OpenKey(root,false); values := tstringlist.create; keys:=tstringlist.create; reg.getvaluenames (values); get all value names reg.getkeynames (keys); get all sub-b
44、ranches for i:=0 to values.count-1 do write all the values first begin s := valuesi; t := s; s=value name if s= then s:= empty means default value, write as else s:= + s + ; else put in quotes write(f,dblbackslash(s)+ = ); write the name of the key to the file Case reg.Getdatatype(t) of What type of
45、 data is it? rdString, rdExpandString: String-type Writeln(f, + dblbackslash(reg.readstring(t) + ); rdInteger: 32-bit unsigned long integer Writeln(f,dword: + inttohex(reg.readinteger(t),8); write an array of hex bytes if data is binary. Perform a line feed after approx. 25 numbers so the line lengt
46、h stays within limits rdBinary : begin write(f,hex:); j := reg.getdatasize(t); determine size getmem(p,j); Allocate memory reg.ReadBinaryData(t,p,J); read in the data, treat as pchar for k:=0 to j-1 do begin Write(f,inttohex(byte(pk),2); Write byte as hex if kj-1 then not yet last byte? begin write(
47、f,); then write Comma if (k0) and (k mod 25)=0) then line too long? writeln(f,); then write Backslash + lf end; if end; for freemem(p,j); free the memory writeln(f); Linefeed end; ELSE writeln(f,); write an empty string if datatype illegal/unknown end; case end; for reg.closekey; value names all done, no longer needed values.free; Now al values are written, we process all subkeys Perform this process RECURSI
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 私人借款合同范本【常用版】8篇
- 公路路基工程施工合同
- 2025年江蘇貨運(yùn)從業(yè)資格證模擬考試下載什么軟件
- 中小企業(yè)合同管理流程控制
- 2025年迪慶貨運(yùn)從業(yè)資格證模擬考試題目
- 教育培訓(xùn)范文及案例分享
- 勞務(wù)分包合同臨建
- 訂餐配送合同7篇
- 合同協(xié)議鋼材采購合同8篇
- 高層精裝二手房買賣合同書7篇
- 2025年上半年潛江市城市建設(shè)發(fā)展集團(tuán)招聘工作人員【52人】易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- 旋轉(zhuǎn)類機(jī)電設(shè)備故障預(yù)測、診斷研究
- 旅游電子商務(wù)(第2版) 課件全套 周春林 項(xiàng)目1-8 電子商務(wù)概述-旅游電子商務(wù)數(shù)據(jù)挖掘
- 企業(yè)承包經(jīng)營合同范本
- 中學(xué)校長2025春開學(xué)典禮講話:以黃旭華之魂、DeepSeek 之智、哪吒之氣逐夢(mèng)新程
- 【課件】自然環(huán)境課件-2024-2025學(xué)年七年級(jí)地理下冊(cè)人教版
- 2025年01月公安部第三研究所公開招聘人民警察筆試筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 2025-2030全球鋰電池用隔膜行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年南京鐵道職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 《抖音高活躍群體研究報(bào)告》
- 2025年高考作文備考訓(xùn)練之二元思辨作文題目解析及范文:我與“別人”
評(píng)論
0/150
提交評(píng)論