系統註冊登記表是Windows 9x中所有配製信息的中央倉庫。它除了保存操作系統自身的軟件、硬件及環境信息外,另一個用途就是保存應用程序中用戶定製的配製信息。把應用程序保存到系統註冊登記表中的方法是使應用程序的適用性提高的最佳方法之一。
在PowerBuilder應用程序中,通過使用PB內嵌的註冊函數對系統註冊登記表的訪問,可以方便地設置和獲取應用程序及用戶設置的信息:如進入應用程序時,通過訪問系統註冊登記表來獲取主窗口的原有大小及位置信息,而退出程序時可保存用戶改變了的窗口大小及位置信息;可以將用戶的設置保存到系統註冊登記表中,在必要時從系統註冊登記表中取出;亦可創建一個.REG文件(註冊登記)來安裝自己的應用程序,以及實現存取ODBC驅動信息等等。
PB註冊(Registry)函數
在PowerBuilder6.0中內嵌的註冊函數有5條,分別是RegistrySet、RegistryGet、RegistryDelete、RegistryKeys、和RegistryValues,需要注意的是,這組函數只能在MicrosoftWindows系統中使用,下面是這五個函數的詳細用法:
1.RegistrySet(key,valuename,valuetype,value)
key String 類型,指定鍵名
valuename String 類型,指定要訪問值或創建新值的名稱
valuetype RegistryValueType枚舉類型,指定值的數據類型
value 要設置的值,其數據類型應與valuetype參數指定的類型相匹配
返回值 函數執行成功時返回1,發生錯誤時返回-1
RegistrySet()的功能是在系統註冊登記表中設置或創建指定鍵和值,如果要設置的鍵名或要設置的值不存在,則先建立再賦值。
如下面的代碼在系統註冊登記表中設置或創建了應用程序MyApp運行時讀寫文件或訪問圖形及其他對象時的路徑:
RegistrySet("HKEY_LOCAL_MACHINE\SOFTWARE\PB6\MYAPP\Application",&
"Path",RegString!,"C:\MyApp")
2.RegistryGet(key,valuename,valuetype,valuevariable)
Key String 類型,指定鍵名
Valuename String 類型,指定要訪問值的名稱
Valuetype RegistryValueType枚舉類型,指定值的數據類型
Valuevariable 用於保存鍵值的變量,其數據類型應與valuetype參數指定的類型相匹配
返回值 函數執行成功時返回1,發生錯誤時返回-1
RegistryGet()的功能是從系統註冊表得到指定鍵的值。如下面的代碼在系統註冊登記表中獲取應用程序MyApp讀寫文件或訪問圖形及其他對象時的路徑於變量ls_Path中:
String ls_Path
RegistryGet("HKEY_LOCAL_MACHINE\SOFTWARE\PB6\MYAPP\Application",&
"Path",RegString!,ls_Path)
3.RegistryDelete(key,valuename)
Key String 類型,指定鍵名,將刪除該鍵或該鍵的某個值
Valuename String 類型,指定要刪除的值的名稱
返回值 函數執行成功時返回1,發生錯誤時返回-1
RegistryDelete()的功能是刪除系統註冊登記表中的一個鍵或鍵的某個值。如想刪除鍵、鍵的值、以及其下的所有子鍵,將valuename參數指定爲空字符串。
如下面的代碼刪除系統註冊登記表中應用程序MyApp讀寫文件或訪問圖形及其他對象時的路徑:
li_return = RegistryDelete("HKEY_LOCAL_MACHINE\
SOFTWARE\PB6\MYAPP\Application","Path")
4.RegistryKeys(key,subkeys)
Key String 類型,指定鍵名
Subkeys 字符串數組變量,用於保存各子鍵
返回值 函數執行成功時返回1,發生錯誤時返回-1
RegistryKeys()的功能是從系統註冊登記表中得到指定鍵的有效子鍵。
如下面的代碼在系統註冊登記表中得到應用程序MyApp的所有子鍵:
String ls_subkeylist[]
li_return = RegistryKeys("HKEY_LOCAL_MACHINE\
SOFTWARE\PB6\MYAPP",ls_subkeylist)
5.RegistryValues(key,valuename)
Key String 類型,指定鍵名
Valuename 字符串數組變量,用於保存各值名
返回值 函數執行成功時返回1,發生錯誤時返回-1
RegistryValues()的功能是從系統註冊登記表中得與指定鍵相關的一組值名。如下面的代碼得到爲用程序MyApp定義的子鍵Application的值名,並將它保存在動態數組ls_valuearray中:
String ls_valuearray[]
li_return = RegistrySet("HKEY_LOCAL_MACHINE
\SOFTWARE\PB6\MYAPP\Application",ls_valuearray)
程序實例
下面以一個簡單的實例來說明PB註冊函數在應用程序中使用。
使用Application畫板,創建一個新庫Myapp.pbl和應用程序對象Myapp;
使用Window畫板,按圖1在窗口w_login上放置一個靜態文本st_1,在靜態文本的屬性頁中將其Text屬性置爲"學年度設定:";放置一個編輯掩碼控件em_1,在其Mask屬性頁中,置Mask屬性爲"####",選中SpinControl屬性,置Min屬性爲"1999";放置一個組框gb_1,在組框的屬性頁中將其Text屬性置爲"考試種類選擇:";在組框內放置兩個單選鈕rb_1和rb_2,在單選鈕rb_1的屬性頁中將其Text屬性置爲"正考",選中Checked屬性,在單選鈕rb_2的屬性頁中將其Text屬性置爲"補考";放置三個命令按鈕cb_save、cb_show和cb_delete,在命令按鈕cb_save的屬性頁中將其Text屬性置爲"保存",在命令按鈕cb_show的屬性頁中將其Text屬性置爲"顯示",在命令按鈕cb_delete的屬性頁中將其Text屬性置爲"刪除"。
給cb_save命令按鈕的Clicked事件輸入如下腳本代碼:
String ls_Login_key
Integer li_return1,li_return2
ls_Login_key = "HKEY_CURRENT_USER\Software\PB6\MYAPP\Login"
li_return1 = RegistrySet(ls_Login_key,
"Year",RegString!,em_1.text)
IF rb_1.checked THEN
li_return2 = RegistrySet(ls_Login_key,
"Examin",RegString!,rb_1.text)
END IF
IF rb_2.checked THEN
li_return2 = RegistrySet(ls_Login_key,
"Examin",RegString!,rb_2.text)
END IF
IF li_return1 = 1 AND li_return2 = 1 THEN
MessageBox("保存信息顯示","Login子鍵的值已保存!")
ELSE
MessageBox("保存信息顯示","Login子鍵的值未能保存!")
END IF
RETURN
給cb_show命令按鈕的Clicked事件輸入如下腳本代碼:
String ls_Login_key,ls_Year,ls_Examin
ls_Login_key = "HKEY_CURRENT_USER\Software\PB6\MYAPP\Login"
IF RegistryGet(ls_Login_key,
"Year",RegString!,ls_Year) = 1 &
AND RegistryGet(ls_Login_key,
"Examin",RegString!,ls_Examin) = 1 THEN
MessageBox("Login子鍵信息顯示",
" 年度:"+ls_Year+char(13)&
+"考試種類:"+ls_Examin)
ELSE
MessageBox("Login子鍵信息顯示","獲取Login子鍵信息失敗!")
END IF
RETURN
給cb_delete命令按鈕的Clicked事件輸入如下腳本代碼:
String ls_Login_key
ls_Login_key = "HKEY_CURRENT_USER
\Software\PB6\MYAPP\Login"
IF RegistryDelete(ls_Login_key,"") = 1 THEN
MessageBox("刪除信息顯示","Login子鍵已刪除!")
ELSE
MessageBox("刪除信息顯示","未能刪除Login子鍵!")
END IF
RETURN
使用Application畫板,爲Myapp應用對象的Open事件輸入如下腳本代碼:
Open(w_login)
運行程序,在圖1窗口中輸入年度1999和選擇補考,之後按"保存"按鈕,然後在按"顯示"按鈕,可以看到顯示出了正確結果(圖2),如果在保存之前或刪除之後按"顯示"按鈕,則出現(圖3)結果,說明要找的子鍵的值不存在。
圖2和圖3差不多,只是一個保存,一個失敗。
當按下"保存"按鈕後,點擊按鈕【開始】→【運行】→鍵入regedit→【確認】,進入系統註冊登記表編輯程序,可以查看到HKEY_CURRENT_USER\Software\PB6\MYAPP\Login子鍵下的信息如(圖4)所示。從上實例可以看出,用PB註冊函數訪問系統註冊表是十分簡單容易的。
PB中對註冊表的操作
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
高標準機房綜合配線安裝
wbzjacky
2019-02-24 13:12:38
IPsec ***實驗
wbzjacky
2019-02-24 13:12:37
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
CISCO訪問控制列表 企業網絡管理的必殺技
wbzjacky
2019-02-24 13:12:37
HSRP和二層交換機的端口聚合、vlan
wbzjacky
2019-02-24 13:12:37