WINDOWS API函数读写INI文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在VB6中用WINDOWS API函数读写INI文件
INI文件在Windows3.2的时代扮演着极其重要的角色,主要用于保存软件参数的设置。但到了Windows95/98的年代,微软推出了注册表,一般要求软件将所有的参数设置全保存到注册表中去。这样一来,当用户安装的软件越来越多的时候,就会导
致注册表越来越庞大,从而令到系统运行速度变慢,稳定性变差。所以,在某些情
况下,如:软件需要保存的数据不多或要制作“绿色软件”时,我们仍然经常用到
INI文件。
《家用电脑》自1999年以来已经有不少文章介绍过在编程时如何读写INI文件的方法,但多是基于C++或Delphi的,对于目前最为流行的编程语言之一的Visual Basic却没有提及。现笔者根据自己的使用经验,将VB中读写INI文件的方
法总结出来,以和各位“大虾”共同探讨一下。
方法当然也是利用Windows本身提供的API函数。对INI文件的读写操作,Windows 提供了如下几个常用的 API函数:GetPrivateProfileInt()、GetPrivateProfileSection()、GetPrivateProfileString()、WritePrivateProfileSection()、WritePrivateProfileString()。由于在《
家用电脑》1999年第21期的《利用Windows API函数在Delphi中对INI文件读写》(以下简称《利》文)中已经对上述5个函数作了详细的介绍。虽然《利》文介绍
的方法是在Delphi中实现的,但除了声明方式外,函数的功能和参数的含义是相同的,所以,笔者就不再详述了,在此仅给出它们在VB中的声明方式及作用:Public Declare Function GetPrivateProfileInt Lib ″kernel32″
Alias ″GetPrivateProfileIntA″ (ByVal lpApplicationName As String,
ByVal lpKeyName As String, ByVal nDefault As Long, ByVal lpFileName As
String) As Long。用于判断指定的INI文件是否可以正确进行操作。
Public Declare Function GetPrivateProfileSection Lib ″kernel32″
Alias ″GetPrivateProfileSectionA″ (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As
String) As Long。用于读取INI文件中指定段的键名称及该键的值。
Public Declare Function GetPrivateProfileString Lib ″kernel32″
Alias ″GetPrivateProfileStringA″ (ByVal lpApplicationName As String,
ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal
lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As
String) As Long。用于读取INI文件中指定的段和键的键值。
Public Declare Function WritePrivateProfileSection Lib ″kernel32″
Alias ″WritePrivateProfileSectionA″ (ByVal lpAppName As String, ByVal
lpString As String, ByVal lpFileName As String) As Long。用于完成INI文
件中指定的段内所有键的键值的写入。
Public Declare Function WritePrivateProfileString Lib ″kernel32″
Alias ″WritePrivateProfileStringA″ (ByVal lpApplicationName As String,
ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As
String) As Long。用于完成INI文件中指定的段和键的键值的写入。
怎么样,看了以上的函数声明,是不是感到头昏脑胀?更不要说要一字不错地
输入到程序去了。在此,笔者要告诉大家一个简单的方法:通过“API文本浏览器
”复制法。依次点击“开始”-“程序”-“Microsoft Visual Basic 6.0 中文
版”-“Microsoft Visual Basic 6.0 中文版工具”-“API文本浏览器”,即
可运行“API文本浏览器”。如图1所示,选择“文件”菜单下的“加载文本文件”
命令,打开一个叫“Win32api.txt”的文件(该文件在Visual Studio安装目录下
的“Common\Tools\Winapi”子目录下)。然后,在“API类型”下选择“声明”,
再在下面的输入框中输入你要查找的函数名,如:“GetPrivate ProfileInt”,
按下回车,你就可以在“选定项”下的文本框中看到该函数的具体声明方式了。此
时按下“复制”按钮,就可以将该声明复制到剪贴板中,接就可以将其粘贴到程序
中去了。
光说不练可不行,下面笔者就通过一个简单的例子演视一下如何在VB6中用以上的API函数读写INI文件。
首先,新建一个工程,在窗体上添加四个Label控件,将其″Caption″属性分
别设置为:″INI文件:″、″段名称:″、″键名称:″、″键值:″。再分
别在这四个Label控件旁边添加四个Text控件,将其″名称″属性分别设置为:″txtFileName″、″txt ApplicationName″、″txtKey Name″、″txt KeyValue
″,将其″Text″属性全设置为空。最后,添加两个″Command″控件,将其″名
称″属性分别设置为:″cmdRead″、″cmdWrite″,″Caption″属性分别设置为
:″读取″、″写入″。
完成界面设计后,在代码窗口中输入以下代码:
Option ExplicitPrivate Sub cmdRead_Click() '读取健值
Dim lpReturnedString As String * 50Dim lpApplicationName As String,
lpKeyName As String, lpDefault As String, lpFileName As String
Dim X As Long
lpFileName = txtFileName.Text '指定要进行操作的INI文件
lpApplicationName = txtApplicationName.Text '设置要读取的段名称(字
符串型)
lpKeyName = txtKeyName.Text '设置要读取的键名称(字符串型)
lpDefault = ″″ '设定当指定的段或键没找到时返回的值
X=Get Private Profile String(lpApplication Name,lp Key Name, lp
Default,lpReturned String,Len(lp Returned String), lp FileName)
If X =0 Then '指定的段或键没找到时
txtKeyValue.Text = ″Failure″
Beep
Else
txtKeyValue.Text = Trim(lpReturnedString) '输出得到的键值
End If
End Sub
Private Sub cmdWrite_Click() '写入健值
Dim lpApplicationName As String, lpFileName As String, lpKeyName
As String, lpString As String
Dim X As Long
lpFileName = txtFileName.Text '指定要进行操作的INI文件
lpApplicationName = txtApplicationName.Text '设定段名称(字符串型)