VB 4.0程序中对已设定参数的存取方法 王斌 1997-01-01   Windows应用程序经常需要将一些参数设置保存下来以备下次启动时使用。在Windows 3.1中,程序设置被保存在Windows系统初始化文件(.INI)中,而Windows 95的程序设置则被保存在Windows 95注册表中。   VB 3.0没有提供专门的函数或语句来存取已设定参数,只能通过调用GetPrivateProfileString、WritePrivateProfileString等几个Windows API函数来访问.INI文件,实现对所设定参数的存取。在VB 4.0中已经新增了两个语句和两个函数专门用来访问Windows 95注册表(或16位Windows平台上的.INI文件),对程序已设定参数的存取不必再使用Windows API函数,这些语句和函数都支持命名参数,其语法和功能如下: #3  1.SAVESETTING语句   语法:   SaveSetting appname,section,key,setting   命令参数及类型/说明:   appname:字符串表达式——应用程序名   section:字符串表达式——小节名   key:字符串表达式——关键字名   setting:表达式——关键字的设定值   功能:   此语句在Windows 95注册表中保存或建立一个应用程序的注册项。如果由于某种原因不能保存关键字设定,则产生一个错误信息。 #3  2.GETALLSETTINGS函数   语法:   GetAllSettings(appname,section)   命令参数及类型/说明:   appname:字符串表达式——应用程序名   section:字符串表达式——小节名   功能:   此函数从应用程序的Windows 95注册表项取回关键字及其对应的设定值。   GetAllSettings返回值为一个Variant,其内容为包含指定小节中的所有关键字及其对应设定值的二维字符串数组。如果appname或section不存在,GetAllSettings返回一个未初始化的Variant。 #3  3.GETSETTING函数   语法:   GetSetting(appname,section,key[,default])   命令参数及类型/说明:   appname:字符串表达式——应用程序名   section:字符串表达式——小节名   key:字符串表达式——关键字名   default:表达式——关键字没有设定值时所返回的值。如果省略,default被假定为零长度字符串("")   功能:   此函数从应用程序的Windows 95注册表项返回关键字设置。   如果任何一个命令名参数给出的设置不存在,GetSetting返回default的值。 #3  4.DELETESETTING语句   语法:   DeleteSetting appname,section[,key]   命令参数及类型/说明:   appname:字符串表达式——应用程序名   section:字符串表达式——小节名   key:字符串表达式——关键字名   功能:   此语句从Windows 95注册表项删除一个小节或关键字设定。   如果提供所有参数,则指定的关键字设定被删除。如果只提供appname和section,则指定的小节及其所有相关关键字设置都被删除。   如果指定的小节和关键字设置不存在,DeleteSetting语句什么也不做。 #3  5.示例   本例首先用SaveSetting语句在Windows 95注册表中为指定程序建立注册项,然后用GetAllSettings和GetSetting函数在Debug窗口中显示关键字设置,最后用DeleteSetting语句删除程序的注册项。   Dim Mysettings As Variant   `用于接收GetAllSettings返回的二维数组   Dim SettingIndex As Integer   `在注册表中MyApp项的Startup小节保存一些设定   SaveSetting Appname:="MyApp",Section:="Startup",key:="Top",Setting:=75   SaveSetting "MyApp","Startup","Left",50   SaveSetting "MyApp","Startup","Password","WB"   `返回注册表MyApp项的Startup小节left的设定值   Debug.Print GetSetting("MyApp","Startup","Left","25")   `返回注册表中MyApp项的Startup小节全部设定   Mysettings=GetAllSettings("MyApp","Startup")   For SettingIndex=LBound(Mysettings,1) To UBound(Mysettings,1)   Debug.Print Mysettings(SettingIndex,0);"=";Mysettings(settingIndex,1)   Next SettingIndex   `删除注册表中MyApp项的Startup小节Left的设定   DeleteSetting "MyApp","Startup","Left"   `删除注册表中MyApp项的Startup小节全部设定   DeleteSetting "MyApp","Startup"