马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?站点注册
×
系统注册登记表是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)
|