考試大計算機二級站整理:用VB函數(shù)輕松訪問系統(tǒng)注冊表
注冊表在Windows 9x中的作用是不言而喻的,它除了保存操作系統(tǒng)自身的軟件、硬件及環(huán)境信息外,一個重要的用途就是保存應(yīng)用程序中允許用戶定制修改的配置信息。 在Visual Basic應(yīng)用程序中,有兩種訪問系統(tǒng)注冊表的方法:一種是使用VB自帶的注冊表函數(shù),另一種則是使用Windows API函數(shù),這兩種方法各有優(yōu)缺點,前者功能簡單但容易使用,后者則功能強大但使用相對復(fù)雜一些,本文給大家介紹用VB自帶的函數(shù)訪問系統(tǒng)注冊表的方法。 一、用VB函數(shù)訪問注冊表的方法
在VB5.0中自帶的注冊表函數(shù)(命令)共有4條,分別是SaveSetting、GetSetting、GetAllSettings和DeleteSetting,下面是四個函數(shù)的詳細(xì)用法: 1SaveSetting appname, section, key, setting appname 應(yīng)用程序或工程的名稱
section 注冊表區(qū)域名稱,在該區(qū)域保存注冊表項設(shè)置
key 要修改的注冊表項的名稱
setting key的設(shè)置值
SaveSetting的功能是在注冊表中指定應(yīng)用程序的區(qū)域中為某注冊表項賦值,如果指定的應(yīng)用程序名、區(qū)域名或注冊表項不存在,則先建立再賦值??梢岳眠@條命令建立某個注冊表項或修改注冊表項的值。 如命令SaveSetting ″MyApp″, ″Option″, ″MyValue″, 1的功能是將程序TestApp的Option區(qū)中MyValue表項的值賦為1,如果MyValue不存在則先建立該表項再賦值為1。 2GetSetting(appname, section, key[, default]) appname 應(yīng)用程序或工程的名稱
section 區(qū)域名稱
key 注冊表項名稱
default key的缺省值,為可選參數(shù)
GetSetting的功能是從注冊表中的應(yīng)用程序指定區(qū)域中返回某注冊表項的設(shè)置值,如果 GetSetting 的參數(shù)中的任何一項在注冊表中都不存在,或key沒有賦值(即=″″)時,則返回default指定的值。 如代碼Value=GetSetting(″MyApp″, ″Option″, ″MyValue″)可以獲取程序TestApp的Option區(qū)中MyValue表項的值。 3GetAllSettings(appname, section) appname 應(yīng)用程序或工程的名稱
section 區(qū)域名稱
GetAllSettings函數(shù)返回Variant型數(shù)據(jù),其內(nèi)容為字符串的二維數(shù)組,該二維數(shù)組包含指定區(qū)域中的所有注冊表項設(shè)置及其對應(yīng)值。如果指定的appname或section不存在,則返回未初始化的Variant。 如命令MySettings=GetAllSettings(″MyApp″, ″Option″)可獲取Option下所有注冊表項的名稱和取值,并將結(jié)果保存在變體型數(shù)據(jù)MySettings中。 4DeleteSetting appname[, section[, key] ] appname 應(yīng)用程序或工程的名稱
section 要刪除注冊表項設(shè)置的區(qū)域名稱,為可選參數(shù)
key 要刪除的注冊表項,為可選參數(shù)
DeleteSetting命令在注冊表中,刪除應(yīng)用程序信息、區(qū)域或注冊表項。當(dāng)只提供appname參數(shù)時,將刪除appname指定的應(yīng)用程序的所有信息,如果提供了appname和section參數(shù),則刪除section指定的區(qū)域,如果提供了所有參數(shù),則刪除指定的注冊表項設(shè)置。 如果指定的應(yīng)用程序、區(qū)域或注冊表項不存在,DeleteSetting將不做任何事情。 如:DeleteSetting ″MyApp″將刪除MyApp應(yīng)用程序保存的全部信息。 二、程序?qū)嵗?BR> 下面以一個簡單的實例說明四個函數(shù)的使用。
新建工程,在Form1上放置兩個標(biāo)簽,Caption屬性分別為“姓名”和“公司”;兩個文本框txtName和txtCompany,Text屬性均設(shè)為空;三個命令按鈕cmdSave、cmdFind和cmdDelete,Caption分別設(shè)為“保存”、“查看”和“刪除”,窗體布局如圖1。 給三個命令按鈕添加如下代碼:
Private Sub cmdSave_Click()
′將兩個文本框中的內(nèi)容分別賦給MyApp下User區(qū)中Name和Company SaveSetting ″MyApp″, ″User″, ″Name″, txtName SaveSetting ″MyApp″, ″User″, ″Company″, txtCompany MsgBox ″您的信息已成功保存!″
End Sub
Private Sub cmdFind_Click()
′查找MyApp下User區(qū)中Name和Company的設(shè)置值并顯示 MsgBox ″您的姓名是:″ & GetSetting(″MyApp″, ″User″, ″Name″) & Chr(13) & Chr(10) & ″您的公司是:″ & GetSetting(″MyApp″, ″User″, ″Company″) End Sub
Private Sub cmdDelete_Click()
′刪除MyApp下的User區(qū)域及其下的所有注冊表項 DeleteSetting ″MyApp″, ″User″ End Sub
運行程序,在圖窗口中輸入姓名和公司名稱,之后按“保存”按鈕,然后再按“查找”,可以看到顯示出了正確的結(jié)果(圖2),說明保存和查找操作都已正常進(jìn)行。如果在保存之前或刪除之后按“查找”按鈕,則出現(xiàn)右圖3對話框,說明要找的注冊表項不存在。 使用上面介紹的四個函數(shù)(命令),我們可以非常容易地在VB代碼中訪問系統(tǒng)注冊表。但有一點比較遺憾,VB的這幾個函數(shù)只能在系統(tǒng)注冊表的固定位置進(jìn)行工作,即只能在\KEY_CURRENT_USER\Software\VB and VBA Program Settings下完成建立、修改和刪除操作,當(dāng)然這個限制對于一般的應(yīng)用程序無關(guān)大局,但對較大的應(yīng)用程序就會造成一些不便,這時我們就需要借助于Windows API函數(shù)。
注冊表在Windows 9x中的作用是不言而喻的,它除了保存操作系統(tǒng)自身的軟件、硬件及環(huán)境信息外,一個重要的用途就是保存應(yīng)用程序中允許用戶定制修改的配置信息。 在Visual Basic應(yīng)用程序中,有兩種訪問系統(tǒng)注冊表的方法:一種是使用VB自帶的注冊表函數(shù),另一種則是使用Windows API函數(shù),這兩種方法各有優(yōu)缺點,前者功能簡單但容易使用,后者則功能強大但使用相對復(fù)雜一些,本文給大家介紹用VB自帶的函數(shù)訪問系統(tǒng)注冊表的方法。 一、用VB函數(shù)訪問注冊表的方法
在VB5.0中自帶的注冊表函數(shù)(命令)共有4條,分別是SaveSetting、GetSetting、GetAllSettings和DeleteSetting,下面是四個函數(shù)的詳細(xì)用法: 1SaveSetting appname, section, key, setting appname 應(yīng)用程序或工程的名稱
section 注冊表區(qū)域名稱,在該區(qū)域保存注冊表項設(shè)置
key 要修改的注冊表項的名稱
setting key的設(shè)置值
SaveSetting的功能是在注冊表中指定應(yīng)用程序的區(qū)域中為某注冊表項賦值,如果指定的應(yīng)用程序名、區(qū)域名或注冊表項不存在,則先建立再賦值??梢岳眠@條命令建立某個注冊表項或修改注冊表項的值。 如命令SaveSetting ″MyApp″, ″Option″, ″MyValue″, 1的功能是將程序TestApp的Option區(qū)中MyValue表項的值賦為1,如果MyValue不存在則先建立該表項再賦值為1。 2GetSetting(appname, section, key[, default]) appname 應(yīng)用程序或工程的名稱
section 區(qū)域名稱
key 注冊表項名稱
default key的缺省值,為可選參數(shù)
GetSetting的功能是從注冊表中的應(yīng)用程序指定區(qū)域中返回某注冊表項的設(shè)置值,如果 GetSetting 的參數(shù)中的任何一項在注冊表中都不存在,或key沒有賦值(即=″″)時,則返回default指定的值。 如代碼Value=GetSetting(″MyApp″, ″Option″, ″MyValue″)可以獲取程序TestApp的Option區(qū)中MyValue表項的值。 3GetAllSettings(appname, section) appname 應(yīng)用程序或工程的名稱
section 區(qū)域名稱
GetAllSettings函數(shù)返回Variant型數(shù)據(jù),其內(nèi)容為字符串的二維數(shù)組,該二維數(shù)組包含指定區(qū)域中的所有注冊表項設(shè)置及其對應(yīng)值。如果指定的appname或section不存在,則返回未初始化的Variant。 如命令MySettings=GetAllSettings(″MyApp″, ″Option″)可獲取Option下所有注冊表項的名稱和取值,并將結(jié)果保存在變體型數(shù)據(jù)MySettings中。 4DeleteSetting appname[, section[, key] ] appname 應(yīng)用程序或工程的名稱
section 要刪除注冊表項設(shè)置的區(qū)域名稱,為可選參數(shù)
key 要刪除的注冊表項,為可選參數(shù)
DeleteSetting命令在注冊表中,刪除應(yīng)用程序信息、區(qū)域或注冊表項。當(dāng)只提供appname參數(shù)時,將刪除appname指定的應(yīng)用程序的所有信息,如果提供了appname和section參數(shù),則刪除section指定的區(qū)域,如果提供了所有參數(shù),則刪除指定的注冊表項設(shè)置。 如果指定的應(yīng)用程序、區(qū)域或注冊表項不存在,DeleteSetting將不做任何事情。 如:DeleteSetting ″MyApp″將刪除MyApp應(yīng)用程序保存的全部信息。 二、程序?qū)嵗?BR> 下面以一個簡單的實例說明四個函數(shù)的使用。
新建工程,在Form1上放置兩個標(biāo)簽,Caption屬性分別為“姓名”和“公司”;兩個文本框txtName和txtCompany,Text屬性均設(shè)為空;三個命令按鈕cmdSave、cmdFind和cmdDelete,Caption分別設(shè)為“保存”、“查看”和“刪除”,窗體布局如圖1。 給三個命令按鈕添加如下代碼:
Private Sub cmdSave_Click()
′將兩個文本框中的內(nèi)容分別賦給MyApp下User區(qū)中Name和Company SaveSetting ″MyApp″, ″User″, ″Name″, txtName SaveSetting ″MyApp″, ″User″, ″Company″, txtCompany MsgBox ″您的信息已成功保存!″
End Sub
Private Sub cmdFind_Click()
′查找MyApp下User區(qū)中Name和Company的設(shè)置值并顯示 MsgBox ″您的姓名是:″ & GetSetting(″MyApp″, ″User″, ″Name″) & Chr(13) & Chr(10) & ″您的公司是:″ & GetSetting(″MyApp″, ″User″, ″Company″) End Sub
Private Sub cmdDelete_Click()
′刪除MyApp下的User區(qū)域及其下的所有注冊表項 DeleteSetting ″MyApp″, ″User″ End Sub
運行程序,在圖窗口中輸入姓名和公司名稱,之后按“保存”按鈕,然后再按“查找”,可以看到顯示出了正確的結(jié)果(圖2),說明保存和查找操作都已正常進(jìn)行。如果在保存之前或刪除之后按“查找”按鈕,則出現(xiàn)右圖3對話框,說明要找的注冊表項不存在。 使用上面介紹的四個函數(shù)(命令),我們可以非常容易地在VB代碼中訪問系統(tǒng)注冊表。但有一點比較遺憾,VB的這幾個函數(shù)只能在系統(tǒng)注冊表的固定位置進(jìn)行工作,即只能在\KEY_CURRENT_USER\Software\VB and VBA Program Settings下完成建立、修改和刪除操作,當(dāng)然這個限制對于一般的應(yīng)用程序無關(guān)大局,但對較大的應(yīng)用程序就會造成一些不便,這時我們就需要借助于Windows API函數(shù)。