祝愿大家身体健康!

 站点注册  找回密码
 站点注册

QQ登录

只需一步,快速开始

查看: 8105|回复: 1

[参考资料] 【转】PB中对注册表的操作

[复制链接]

[参考资料] 【转】PB中对注册表的操作

[复制链接]
ehxz

主题

0

回帖

57万

积分

管理员

积分
572564
贡献
在线时间
小时
2010-8-20 10:29:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?站点注册

×
系统注册登记表是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)
共享共进共赢Sharing And Win-win Results
SYBASEBBS - 免责申明1、欢迎访问“SYBASEBBS.COM”,本文内容及相关资源来源于网络,版权归版权方所有!本站原创内容版权归本站所有,请勿转载!
2、本文内容仅代表作者观点,不代表本站立场,作者自负,本站资源仅供学习研究,请勿非法使用,否则后果自负!请下载后24小时内删除!
3、本文内容,包括但不限于源码、文字、图片等,仅供参考。本站不对其安全性,正确性等作出保证。但本站会尽量审核会员发表的内容。
4、如本帖侵犯到任何版权问题,请立即告知本站 ,本站将及时删除并致以最深的歉意!客服邮箱:admin@sybasebbs.com
sunchengbo2007

主题

0

回帖

1090

积分

金牌会员

积分
1090
贡献
在线时间
小时
2011-6-20 21:23:02 | 显示全部楼层
留个脚印儿,以后好找,谢谢斑竹了~~~
共享共进共赢Sharing And Win-win Results
您需要登录后才可以回帖 登录 | 站点注册

本版积分规则

免责声明:
本站所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:Admin@SybaseBbs.com

QQ|Archiver|PowerBuilder(PB)BBS社区 ( 鲁ICP备2021027222号-1 )

GMT+8, 2024-5-14 03:32 , Processed in 0.053296 second(s), 7 queries , MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表