Windows应用程序的初始化文件(INI)对应用程序缺省设置起着重要的作用,初始化文件可以采用文本编辑器修改,但这种方法容易出现错误,不易由用户操作。下面介绍用VB实现修改初始化文件的方法。
1初始化文件的结构与特点
Windows应用程序初始化文件中通常设置应用程序的运行环境,确定应用程序变量的缺省设置,初始化文件既包含Windows本身的两个INI文件,也包括应用程序的初始化文件。如:win.ini、system.ini、ucdos.ini、vb.ini等。
其中,ucdos.ini、vb.ini分别为希望公司的UCDOS和VisualBasic的初始化文件,这些初始化文件一般都是由应用程序和关键词构成,文件中内容的格式采用下面的通用格式:
[程序名称]
关键词=取值
例如,在system.ini中有一段内容设置非WINDOWS应用程序的字体,即:
〔NonWindowsApp〕
FontChangeEnable=1
其中,NonWindowsApp为应用程序名,FontChangeEnable为关键词,1为取值。
2与初始化有关的API函数
Windows95中的动态链接库Kernel.exe包含了六个函数,可以对INI文件进行操作,其中GetProfileInt、GetPrivateProfileInt、GetProfileString和GetPrivateString四个函数可以从INI文件中基于应用程序名和关键词的行获得信息。WritePrivateProfileString和WriteProfileString两个函数可以在INI文件中修改或创建文件中的有关行。
在VB应用程序中应按下面的方式在全局模块中进行声明。
DeclareFunctionGetProfilelntLib″Kernel″(ByVallpAppNameAsString,ByVallpKeyNameAsString,ByValnDefaultAsInteger)AsInteger
DeclareFunctionGetProfileStringLib″Kernel″(ByVallpAppNameAsString,lpKeyNameAsAny,ByVallpDefaultAsString,ByVallpReturnedsringAsString,ByValnSizeAslnteger)AsInteger
DeclareFunctionWriteProfileStringLib″Kernel″(ByVallpApplicationNameAsString,lpKeyNameAsAny,lpStringAsAny)Aslnteger
DeclareFunctionGetPrivateProfilelntLib″Kernel″(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,ByValnDefaultAslnteger,ByvallpFileNameAsString)Aslnteger
DeclareFunctionGetPrivateProfileStringLib″Kernel″(ByVallpApplicationNameAsString,lpKeyNameAsAny,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsString,ByValnSizeAsInteger,ByvallpFileNameAsString)AsInteger
DeclareFunctionWriteProfileStringLib″Kernel″(ByVallpApplicationNameAsString,lpKeyNameAsAny,lpStringAsAny)Aslnteger
其中:lpApplicationName$为应用程序名称;
lpKeyName$为关键词;
nDefault%为关键词指定的缺省值;
lpFileName$为初始化文件名称;
lpDefault$为关键词指定的缺省字符串;
lpReturnString$为接受返回值指定字符的缓冲变量;
nSize%指定拷贝到缓冲变量的字符个数;
lpString$为新的关键词指定字符串。
上面的声明可以从VB目录上的winapi中文件win32txt获得,可以通过剪贴板直接拷贝到VB中。
3修改初始化文件实例
Windows软件包程序管理器(PROGRAMEXE),初始化文件为PROGRAM.INI,缺省内容为
[Settings]
……
order=632471
……
其中,order指定程序组的排列顺序,下面的程序把Order的值改为“2341765”,并使用SHELL函数启动程序管理器。
PrivateSubform_Click()
lpAppName$=″Settings″
lpKeyName%=″Order″
lpString$=″2341765″
lpFileName$=″progman.ini″
j%=WritePrivateProfileString(lpAppName$,lpKeyName$=″Order″,lpString$=″2341765″,lpFileName$)
j%=Shell(″progman.exe″,1)
EndSub->