Private 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
Private Declare Function WritePrivateProfileString Lib "Kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As String, ByVal keydefault As String, ByVal Filename As String) As LongPrivate sDefInitFileName As String'读取Ini文件
Public Function GetInitEntry(ByVal sSection As String, ByVal sKeyName As String, Optional ByVal sDefault As String = "", Optional ByVal sInitFileName As String = "") As StringDim sBuffer As String
Dim sInitFile As String    If Len(sInitFileName) = 0 Then
        If Len(sDefInitFileName) = 0 Then
            sDefInitFileName = App.Path
            If Right$(sDefInitFileName, 1) <> "\" Then
                sDefInitFileName = sDefInitFileName & "\"
            End If
            sDefInitFileName = sDefInitFileName & App.EXEName & ".ini"
        End If
        sInitFile = sDefInitFileName
    Else
        sInitFile = sInitFileName
    End If
    
    sBuffer = String$(2048, " ")
    GetInitEntry = Left$(sBuffer, GetPrivateProfileString(sSection, ByVal sKeyName, sDefault, sBuffer, Len(sBuffer), sInitFile))End Function'写Ini文件
Public Function SetInitEntry(ByVal sSection As String, Optional ByVal sKeyName As String, Optional ByVal sValue As String, Optional ByVal sInitFileName As String = "") As LongDim sInitFile As String    If Len(sInitFileName) = 0 Then
        If Len(sDefInitFileName) = 0 Then
            sDefInitFileName = App.Path
            If Right$(sDefInitFileName, 1) <> "\" Then
                sDefInitFileName = sDefInitFileName & "\"
            End If
            sDefInitFileName = sDefInitFileName & App.EXEName & ".ini"
        End If
        sInitFile = sDefInitFileName
    Else
        sInitFile = sInitFileName
    End If
    
    If Len(sKeyName) > 0 And Len(sValue) > 0 Then
        SetInitEntry = WritePrivateProfileString(sSection, ByVal sKeyName, ByVal sValue, sInitFile)
    ElseIf Len(sKeyName) > 0 Then
        SetInitEntry = WritePrivateProfileString(sSection, ByVal sKeyName, vbNullString, sInitFile)
    Else
        SetInitEntry = WritePrivateProfileString(sSection, vbNullString, vbNullString, sInitFile)
    End IfEnd Function

解决方案 »

  1.   

    我把这个功能写成了DLL文件,需要的话,给邮箱.方法与楼上是一样的,但用起来更方便而已
      

  2.   

    谢谢楼上了!
    Email:[email protected]
      

  3.   

    Private 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 LongPrivate 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
    '函数说明
    'StandKey为主值也就是[]中的内容
    'keyName为字变量名
    'keyValue为值
    'FileName为文件名
    Private Function WriteIniFileString(StandKey As String, keyName As String, keyValue As String, FileName) As Long
    '写INI文件
        Dim leninikey As Long
        Dim strkey As String * 255
        WriteIniFileString = WritePrivateProfileString(StandKey, keyName, keyValue, FileName)
        
    End Function
    Private Function GetIniFileString(StandKey As String, keyName As String, Default As String, FileName As String) As String
        '读取INI文件函数
        Dim leninikey As Long
        Dim strkey As String * 255
        leninikey = GetPrivateProfileString(StandKey, keyName, Default, strkey, Len(strkey), FileName)
        GetIniFileString = (Left(strkey, leninikey))
        
    End Function
      

  4.   

    没有必要用什么DLL了
    把这个放入模块
    调用就可以了
    不然您的程序又多了一个DLL
    麻烦
      

  5.   

    同意楼上的
    '别人的
    '封装好了的代码:
    Option ExplicitDeclare 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
    Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As LongPublic Function ReadCfg(ByVal szAppName As String, ByVal szKey As String, Optional ByVal szDefault As String = "") As String
    Dim t As String * 255
    GetPrivateProfileString szAppName, szKey, szDefault, t, 255, AppPath + "config.ini"
    ReadCfg = Left(t, InStr(t, Chr(0)) - 1)
    End FunctionPublic Sub SaveCfg(ByVal szAppName As String, ByVal szKey As String, ByVal szValue As String)
    WritePrivateProfileString szAppName, szKey, szValue, AppPath + "config.ini"
    End SubPublic Function AppPath() As String
    If Right(App.Path, 1) = "\" Then
        AppPath = App.Path
    Else
        AppPath = App.Path + "\"
    End If
    End Function
    '直接使用ReadCfg和SaveCfg就可以了
      

  6.   

    以为我以前从来没有写过INI文件,所以很多地方都看不明白,不知道该怎么去做,希望能给出注释!谢谢了!
      

  7.   

    http://www.csdn.net/expert/topic/531/531110.xml?temp=.9879572
    主  题:  谁能详细的说说如何读取和修改ini文件,一定给分。 
    作  者:  blacklevin (黑闪电)  
    等  级:    
    信 誉 值:  100 
    所属论坛:  Visual Basic 
    问题点数:  100 
    回复次数:  13 
    发表时间:  2002-2-17 20:23:03 谁能详细的说说如何读取和修改ini文件,一定给分。