【 tulaoshi.com - 编程语言 】
                             
                            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->