Public File As StringPrivate 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 Integer, ByVal lpFileName As String) As Integer
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal Appname As String, ByVal KeyName As Any, ByVal NewString As Any, ByVal Filename As String) As IntegerSub DeleteSection(ByVal Section As String)Dim retval As Integer   retval = WritePrivateProfileString(Section, 0&, "", File)End Sub
Public Function SaveSetting(ByVal Section$, ByVal Key$, ByVal Value$)Dim retval As Integer   SaveSetting = WritePrivateProfileString(Section$, Key$, Value$, File)End FunctionPublic Function GetSetting(ByVal Section As String, ByVal KeyName As String) As StringDim retval As Integer
Dim t As String * 255   ' Get the value
   retval = GetPrivateProfileString(Section, KeyName, "unknown value", t, Len(t), File)   ' If there is one, return it
   If retval > 0 Then
      GetSetting = Left$(t, retval)
   Else
      GetSetting = "Unknown section or key"
   End IfEnd FunctionPublic Function GetSection(ByVal Section As String, KeyArray() As String) As IntegerDim retval As Integer
' Allocate space for return value
Dim t As String * 2500
Dim lastpointer As Integer
Dim nullpointer As Integer
Dim ArrayCount As Integer
Dim keystring As String
   
   ReDim KeyArray(0)
   
   ' Get the value
   retval = GetPrivateProfileString(Section, 0&, "", t, Len(t), File)
   
   ' If there is one, return it
   If retval > 0 Then
      '
      ' Separate the keys and store them in the array
      nullpointer = InStr(t, Chr$(0))
      lastpointer = 1
      Do While (nullpointer <> 0 And nullpointer > lastpointer + 1)
         '
         ' Extract key string
         keystring = Mid$(t, lastpointer, nullpointer - lastpointer)
         '
         ' Now add to array
         ArrayCount = ArrayCount + 1
         ReDim Preserve KeyArray(ArrayCount)
         KeyArray(ArrayCount) = keystring
         '
         ' Find next null
         lastpointer = nullpointer + 1
         nullpointer = InStr(nullpointer + 1, t, Chr$(0))
      Loop
   End If
   '
   ' Return the number of array elements
   GetSection = ArrayCount
   
End Function很清楚了吧?

解决方案 »

  1.   

    http://lovevb.2699.com里面有几个这方面的源码。
      

  2.   

    给我你的确切email地址,有个专业的范例程序
      

  3.   

    创建基本的外接程序
    建立外接程序的工作主要是创建类模块,用于处理外接程序专门的事件以及其它用户指定的事件,另外还包括用户的支持模块和窗体。除非需要有在相同的 IDE 中运行同一个外接程序的多个实例,否则,所有的类过程都必须声明为 “私有的”,以防其它例程随便地引用它们。因为外接程序必须是 ActiveX 部件,所以,在完成外接程序的代码之后,必须将其作为 ActiveX.dll 或者 .exe 文件进行编译。由于种种原因,一般情况下最好将外接程序创建为 ActiveX.dll 文件。详细信息   关于对 .exe 和 .dll 文件类型的外接程序的简单比较,请参阅“如何建立外接程序”中的“编译外接程序”。 初次涉足,先建立一个非常简单的外接程序,它只演示如何使用外接程序的基本部件─类模块。以后将解释该例是如何工作的。注意   下面的过程引导您手工创建外接程序。或者,您可以只创建一个外接程序工程,则所有的基本外接程序结构都会为您创建好。要创建 AddInProject 外接程序,请按照以下步骤执行: 在“文件”菜单中,单击“新建工程”打开“新建工程”对话框。(这将关闭当前的工程或工程组;并提示保存所作的改动。)双击 “ActiveX DLL”图标创建一个新的工程。
    单击“工程”菜单,然后单击“引用”,选择“Microsoft Visual Basic 5.0 扩展”和“Microsoft Office 8.0 Object Library”复选框。 
    这样就可以对创建外接程序所需的可扩展性对象和集合进行访问。单击“工程”菜单,再单击“添加模块”,在“添加模块”对话框中双击“模块”图标,创建一个新的模块。 
    注意,有一个对应于 AddIn 模板的图标。该模板包括外接程序必备的一些启动代码。在新模块中输入以下代码:Declare Function WritePrivateProfileString& Lib _ 
    "kernel32" Alias "WritePrivateProfileStringA" _ 
    (ByVal AppName$, ByVal KeyName$, ByVal _ 
    keydefault$, ByVal FileName$)
    Sub AddToINI()
    Dim rc As Long
    rc = WritePrivateProfileString("Add-Ins32", _ 
    "AddInProject.AddInClass", "0", "VBADDIN.INI")
    MsgBox _ 
    "Add-in is now entered in VBADDIN.INI file."
    End Sub或者,您可以用外接程序设计器为您的外接程序创建引用。有关如何进行的详细指令,请参阅第四章“连接和显露外接程序”中的“引用外接程序”。在“工程资源管理器”窗口中,双击类模块 Class1 将其显示出来。将 Name 属性设置为“AddInClass”,并确认其 Instancing 属性为 "5 – MultiUse"。
    将以下代码行添加到类模块中: 
    Implements IDTExtensibility这样将在工程中增加一个 IDTExtensibility 对象的引用。在“对象”框中单击“IDTExtensibility”。 
    注意,四个新的事件将出现在“过程”框中:OnConnection、OnDisconnection、OnStartupComplete以及 OnAddInsUpdate。单击“过程”框中的每个事件,把它们的过程添加到类模块中。 
    虽然可以手工地输入过程语法,这里仍然强烈建议以单击框中的事件名的方式将过程添加至类模块中,从而确保所有的名称和参数均输入正确。另外,这样会快得多!要使外接程序正常工作,所有这些事件过程都必须出现在类模块中。另外,如果有一个或多个事件过程中没有任何代码,则在编译时它将被删除,因此,至少需要在每个事件过程中加入一句注释,以确保编译时它们被保留在类模块中,这是很重要的。既然已经添加了四个事件,再加上以下代码: 
    Private Sub IDTExtensibility_OnConnection(ByVal _ 
    VBInst As Object, ByVal ConnectMode As _ 
    VBIDE.vbext_ConnectMode, ByVal AddInInst As _ 
    VBIDE.AddIn, custom() As Variant)
    MsgBox "Add-in is now connected"
    End SubPrivate Sub IDTExtensibility_OnDisconnection(ByVal _ 
    RemoveMode As VBIDE.vbext_DisconnectMode, _ 
    Custom () as Variant)
    MsgBox "Add-in is now disconnected"
    End SubPrivate Sub IDTExtensibility_OnStartupComplete _ 
    (custom() As Variant)
    '增加注释的目的是
    '防止过程在编译的时候被删除。
    End SubPrivate Sub IDTExtensibility_OnAddInsUpdate _ 
    (custom() As Variant)
    '增加注释的目的是
    '防止过程在编译的时候被删除。
    End Sub在“工程”菜单中,单击“Project1 属性”,然后在“工程名称”框中输入 AddInProject,然后单击“确定”。
    在“文件”菜单中,单击“保存工程”保存工程文件。按下述表格对其命名。Visual Basic 将自动提供下面显示的扩展名。 文件 文件名 扩展名 
    Basic module AddIn .bas 
    Class module AddInClass .cls 
    Project AddInProject .vbp 
    要测试 AddInProject 外接程序,请按照以下步骤执行: 单击“文件”菜单,再单击“生成 AddInProject.dll”。在“生成工程”对话框中单击“确定”。 
    这将把外接程序注册到系统注册表。在“立即”窗口中,输入 AddToINI 然后按RETURN 键。随后将出现一个消息框显示出“外接程序现在进入到 VBADDIN.INI 文件中”。
    在“文件”菜单中,单击“新建工程”打开“新建工程”对话框。(这将关闭 AddInProject.vbp,并提示保存所作的改动。)双击“标准 EXE”图标创建一个新的工程。
    单击“外接程序”菜单,再单击“外接程序管理器”。注意列表中将出现一个新的条目:“AddInProject.AddInClass”。
    选择“AddInProject.AddInClass”复选框,然后单击“确定”。 
    这时,将出现以下对话框:单击“确定”,清除“AddInProject.AddInClass”复选框,然后再单击“确定”。 
    这时将出现以下对话框:刚才发生了什么
    这个外接程序的作用是说明外接程序的部件,以及类模块这一基本部件的特点。下面将遍历上述各步骤,讨论每一步做了些什么,更重要的是:怎样做以及为什么这么做。 AddToINI 过程只有一个作用:在 Windows 目录下的 Vbaddin.ini 文件中为新的外接程序增加一项。为什么要这么做呢?因为这样 Visual Basic 才会知道它是可用的外接程序。可以以任何方式添加该项,但是 Windows WritePrivateProfileString API 函数调用可以令人满意地完成该任务。 
    到这里需要指出很重要的一点:把一个外接程序分发给其他用户的时候,在使用该外接程序之前,必须在其机器上运行这个函数(也可以使用其它的替代方法)更新 Vbaddin.ini 文件。如果不这么做,Visual Basic 将不知道该外接程序是可用的,该外接程序将不会显示在“外接程序管理器”的外接程序列表中。可以将这样一个过程放在基本模块中(如同所做的那样),并且指示用户运行此函数,但是更明智的解决办法是:在外接程序安装程序中替用户完成该工作。或者,您可以用外接程序设计器为您的外接程序创建引用。有关如何进行的详细指令,请参阅第四章“连接和显露外接程序”中的“引用外接程序”。类模块是外接程序的核心。它是外接程序对事件作出响应的地方。在这个例子中,很显然它并没有做什么,只是在连接或断开外接程序的时候显示消息框,但是,可以设计外接程序对数百个事件作出准确的响应! 
    尽管主类模块是可以使用的,但最好还是不要把所有的代码都放在其中,除非很简单的情况。可以把其它代码放到基本模块或其它的类模块中,并从主类模块中调用该过程。只需按照通常过程的程序设计准则即可。在 DLL 的编译过程中,它将被注册到系统注册表中。
    在“立即”窗口中运行 AddToINI 过程,为外接程序在 Vbaddin.ini 中创建一个 .ini 文件登录项。
    后面的步骤显示如何在其它工程中激活该外接程序,以及它在“外接程序管理器”中如何显示和动作。另外,还显示了在“外接程序管理器”中选择和清除外接程序登录项时 OnConnection 和 OnDisconnection 事件是如何触发的。 
      

  4.   

    有必要搞得这么复杂吗,subzero的解答已经不错了,wjl2000,不要被他们弄花眼了。
      

  5.   

    subzero的解答已经不错了!我的小站里有一个VB中INI文件读写的例子可以看一下。
      http://phf110.yeah.net
      

  6.   

    主  题:求教如何在VB中创建ini文件、并依键值进行修改、添加和删除信息?
     
    本人在程序中需要将用户的信息保存下来,下次启动应用程序时再调入,因信息量大,
    不宜保存在注册表中,因此向保存在ini文件中,请高手赐教!!希望能详细说明,创建
    的各个步骤。回复贴子: 回复人:subzero(2000-09-18 13:05:00 ) 得40分 Public File As StringPrivate 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 Integer, ByVal lpFileName As String) As IntegerPrivate Declare Function WritePrivateProfileString Lib "kernel32" 
    Alias "WritePrivateProfileStringA" (ByVal Appname As String, ByVal KeyName As
    Any, ByVal NewString As Any, ByVal Filename As String) As IntegerSub DeleteSection(ByVal Section As String)Dim retval As Integer
    retval = WritePrivateProfileString(Section, 0&, "", File)
    End SubPublic Function SaveSetting(ByVal Section$, ByVal Key$, ByVal Value$)
      Dim retval As Integer
      SaveSetting = WritePrivateProfileString(Section$, Key$, Value$, File)
    End FunctionPublic Function GetSetting(ByVal Section As String, ByVal KeyName As String) 
    As StringDim retval As Integer
    Dim t As String * 255   ' Get the value
       retval = GetPrivateProfileString(Section, KeyName, "unknown value", t, 
    Len(t), File)   ' If there is one, return it
       If retval > 0 Then
          GetSetting = Left$(t, retval)
       Else
          GetSetting = "Unknown section or key"
       End IfEnd FunctionPublic Function GetSection(ByVal Section As String, KeyArray() As String) 
    As IntegerDim retval As Integer
    ' Allocate space for return value
    Dim t As String * 2500
    Dim lastpointer As Integer
    Dim nullpointer As Integer
    Dim ArrayCount As Integer
    Dim keystring As String
       
       ReDim KeyArray(0)
       
       ' Get the value
       retval = GetPrivateProfileString(Section, 0&, "", t, Len(t), File)
       
       ' If there is one, return it
       If retval > 0 Then
          '
          ' Separate the keys and store them in the array
          nullpointer = InStr(t, Chr$(0))
          lastpointer = 1
          Do While (nullpointer <> 0 And nullpointer > lastpointer + 1)
             '
             ' Extract key string
             keystring = Mid$(t, lastpointer, nullpointer - lastpointer)
             '
             ' Now add to array
             ArrayCount = ArrayCount + 1
             ReDim Preserve KeyArray(ArrayCount)
             KeyArray(ArrayCount) = keystring
             '
             ' Find next null
             lastpointer = nullpointer + 1
             nullpointer = InStr(nullpointer + 1, t, Chr$(0))
          Loop
       End If
       '
       ' Return the number of array elements
       GetSection = ArrayCount
       
    End Function很清楚了吧? 
     
    回复人:liuwc(2000-09-18 13:08:00 ) 得5分 
    http://lovevb.2699.com里面有几个这方面的源码。 
     
    回复人:Putao(2000-09-18 13:28:00 ) 得5分 
    给我你的确切email地址,有个专业的范例程序 
     
    回复人:lumine(2000-09-18 20:12:00 ) 得40分 
    创建基本的外接程序
    建立外接程序的工作主要是创建类模块,用于处理外接程序专门的事件以及其它用户指定
    的事件,另外还包括用户的支持模块和窗体。除非需要有在相同的 IDE 中运行同一个外
    接程序的多个实例,否则,所有的类过程都必须声明为 “私有的”,以防其它例程随便
    地引用它们。因为外接程序必须是 ActiveX 部件,所以,在完成外接程序的代码之后,必须将其作
    为 ActiveX.dll 或者 .exe 文件进行编译。由于种种原因,一般情况下最好将外接程
    序创建为 ActiveX.dll 文件。详细信息:关于对 .exe 和 .dll 文件类型的外接程序的简单比较,请参阅“如何建立外
    接程序”中的“编译外接程序”。 初次涉足,先建立一个非常简单的外接程序,它只演示如何使用外接程序的基本部件─类
    模块。以后将解释该例是如何工作的。注意   下面的过程引导您手工创建外接程序。或者,您可以只创建一个外接程序工程,
    则所有的基本外接程序结构都会为您创建好。要创建 AddInProject 外接程序,请按照以下步骤执行:
    在“文件”菜单中,单击“新建工程”打开“新建工程”对话框。(这将关闭当前的工
    程或工程组;并提示保存所作的改动。)双击 “ActiveX DLL”图标创建一个新的工程。单击“工程”菜单,然后单击“引用”,选择“Microsoft Visual Basic 5.0 扩展”和
    “Microsoft Office 8.0 Object Library”复选框.这样就可以对创建外接程序所需的
    可扩展性对象和集合进行访问。单击“工程”菜单,再单击“添加模块”,在“添加模块”对话框中双击“模块”图标,
    创建一个新的模块。 
    注意:有一个对应于 AddIn 模板的图标。该模板包括外接程序必备的一些启动代码。在新模块中输入以下代码:
    Declare Function WritePrivateProfileString & Lib _ 
    "kernel32" Alias "WritePrivateProfileStringA" _ 
    (ByVal AppName$, ByVal KeyName$, ByVal _ 
    keydefault$, ByVal FileName$)
    Sub AddToINI()
    Dim rc As Long
    rc = WritePrivateProfileString("Add-Ins32", _ 
    "AddInProject.AddInClass", "0", "VBADDIN.INI")
    MsgBox _ 
    "Add-in is now entered in VBADDIN.INI file."
    End Sub或者,您可以用外接程序设计器为您的外接程序创建引用。有关如何进行的详细指令,请
    参阅第四章“连接和显露外接程序”中的“引用外接程序”。在“工程资源管理器”窗口中,双击类模块 Class1 将其显示出来。将 Name 属性设置
    为“AddInClass”,并确认其 Instancing 属性为 "5 – MultiUse"。将以下代码行添加到类模块中: 
    Implements IDTExtensibility這样将在工程中增加一个 IDTExtensibility 对象的引用。在“对象”框中单击“IDTExtensibility”。 
    注意,四个新的事件将出现在“过程”框中:OnConnection、OnDisconnection、
    OnStartupComplete以及 OnAddInsUpdate。单击“过程”框中的每个事件,把它们的过程添加到类模块中。 
    虽然可以手工地输入过程语法,这里仍然强烈建议以单击框中的事件名的方式将过程添加
    至类模块中,从而确保所有的名称和参数均输入正确。另外,这样会快得多!要使外接程序正常工作,所有这些事件过程都必须出现在类模块中。另外,如果有一个或
    多个事件过程中没有任何代码,则在编译时它将被删除,因此,至少需要在每个事件过程
    中加入一句注释,以确保编译时它们被保留在类模块中,这是很重要的。既然已经添加了四个事件,再加上以下代码: 
    Private Sub IDTExtensibility_OnConnection(ByVal _ 
    VBInst As Object, ByVal ConnectMode As _ 
    VBIDE.vbext_ConnectMode, ByVal AddInInst As _ 
    VBIDE.AddIn, custom() As Variant)
    MsgBox "Add-in is now connected"
    End SubPrivate Sub IDTExtensibility_OnDisconnection(ByVal _ 
    RemoveMode As VBIDE.vbext_DisconnectMode, _ 
    Custom () as Variant)
    MsgBox "Add-in is now disconnected"
    End SubPrivate Sub IDTExtensibility_OnStartupComplete _ 
    (custom() As Variant)
    '增加注释的目的是
    '防止过程在编译的时候被删除。
    End SubPrivate Sub IDTExtensibility_OnAddInsUpdate _ 
    (custom() As Variant)
    '增加注释的目的是
    '防止过程在编译的时候被删除。
    End Sub在“工程”菜单中,单击“Project1 属性”,然后在“工程名称”框中输入
    AddInProject,然后单击“确定”。在“文件”菜单中,单击“保存工程”保存工程文件。按下述表格对其命名。
    Visual Basic 将自动提供下面显示的扩展名。 文件 文件名 扩展名 
    Basic module AddIn .bas 
    Class module AddInClass .cls 
    Project AddInProject .vbp 要测试 AddInProject 外接程序,请按照以下步骤执行: 单击“文件”菜单,再单击“生成 AddInProject.dll”。在“生成工程”对话框中单击
    “确定”。 
    这将把外接程序注册到系统注册表。在“立即”窗口中,输入 AddToINI 然后按RETURN 键。随后将出现一个消息框显示出
    “外接程序现在进入到 VBADDIN.INI 文件中”。在“文件”菜单中,单击“新建工程”打开“新建工程”对话框。
    (这将关闭 AddInProject.vbp,并提示保存所作的改动。)双击“标准 EXE”图
    标创建一个新的工程。单击“外接程序”菜单,再单击“外接程序管理器”。注意列表中将出现一个新的条目:
    “AddInProject.AddInClass”。选择“AddInProject.AddInClass”复选框,然后单击“确定”。 
    这时,将出现以下对话框:单击“确定”,清除“AddInProject.AddInClass”复选框,然后再单击“确定”。 
    这时将出现以下对话框:"刚才发生了什么"这个外接程序的作用是说明外接程序的部件,以及类模块这一基本部
    件的特点。下面将遍历上述各步骤,讨论每一步做了些什么,更重要的是:怎样做以及
    为什么这么做。 AddToINI 过程只有一个作用:在 Windows 目录下的 Vbaddin.ini 文件中为新的外接
    程序增加一项。为什么要这么做呢?因为这样 Visual Basic 才会知道它是可用的外接
    程序。可以以任何方式添加该项,但是 Windows WritePrivateProfileString API 函
    数调用可以令人满意地完成该任务。 
    到这里需要指出很重要的一点:把一个外接程序分发给其他用户的时候,在使用该外接
    程序之前,必须在其机器上运行这个函数(也可以使用其它的替代方法)更
    新 Vbaddin.ini 文件。如果不这么做,Visual Basic 将不知道该外接程序是可用的,
    该外接程序将不会显示在“外接程序管理器”的外接程序列表中。可以将这样一个过程放在基本模块中(如同所做的那样),并且指示用户运行此函数,
    但是更明智的解决办法是:在外接程序安装程序中替用户完成该工作。或者,您可以用外接程序设计器为您的外接程序创建引用。有关如何进行的详细指令,
    请参阅第四章“连接和显露外接程序”中的“引用外接程序”。类模块是外接程序的核心。它是外接程序对事件作出响应的地方。在这个例子中,很显
    然它并没有做什么,只是在连接或断开外接程序的时候显示消息框,但是,可以设计外
    接程序对数百个事件作出准确的响应! 
    尽管主类模块是可以使用的,但最好还是不要把所有的代码都放在其中,除非很简单的
    情况。可以把其它代码放到基本模块或其它的类模块中,并从主类模块中调用该过程。只
    需按照通常过程的程序设计准则即可。在 DLL 的编译过程中,它将被注册到系统注册表中。在“立即”窗口中运行 AddToINI 过程,为外接程序在 Vbaddin.ini 中创建一个 .ini 
    文件登录项。后面的步骤显示如何在其它工程中激活该外接程序,以及它在“外接程序管理器”中如
    何显示和动作。另外,还显示了在“外接程序管理器”中选择和清除外接程序登录项
    时 OnConnection 和 OnDisconnection 事件是如何触发的。  
     
    我的小站里有一个VB中INI文件读写的例子可以看一下。
      http://phf110.yeah.net