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->