codice:
Option Explicit
'' -----------------------------------------------------------------
' Gest Ini
'' -----------------------------------------------------------------
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 lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
'' -----------------------------------------------------------------
' Write Ini
'' -----------------------------------------------------------------
Function PutIniValue(ByVal SECTION As String, ByVal Key As String, ByVal FName As String, ByVal DefVal As String) As Boolean
Dim Rc As Integer
Rc = WritePrivateProfileString(SECTION, Key, DefVal, FName)
PutIniValue = (Rc = 1)
End Function
'' -----------------------------------------------------------------
' Get Value to Ini
'' -----------------------------------------------------------------
Function GetIniValue(SECTION As String, Key As String, FName As String, Optional DefVal As String = vbNullString) As String
Dim Temp As String
Dim Rc As Integer
Dim hBuffer As String
Temp = String(30000, &H20)
Rc = GetPrivateProfileString(SECTION, Key, "", Temp, Len(Temp), FName)
If Rc Then
If InStr(Temp, Chr(0)) Then Temp = Left(Temp, InStr(Temp, Chr(0)) - 1)
hBuffer = Trim(Temp)
Else
If DefVal <> vbNullString Then
Rc = WritePrivateProfileString(SECTION, Key, DefVal, FName)
hBuffer = DefVal
End If
End If
GetIniValue = hBuffer
End Function
'' -----------------------------------------------------------------
' Get Section to Ini
'' -----------------------------------------------------------------
Public Function GetIniSections(ByVal fileName As String) As Collection
Dim hBuf As String
Dim success As Integer
Dim retValues As New Collection
Dim p As Integer
Dim start As Integer
Dim length As Integer
hBuf = String(30000, Chr(0))
success = GetPrivateProfileString(vbNullString, "", "", hBuf, Len(hBuf), fileName)
If success Then
hBuf = Trim(hBuf)
start = 1
length = InStr(start, hBuf, Chr(0)) - start
Do While length > 0
retValues.Add Mid(hBuf, start, length)
start = start + length + 1
length = InStr(start, hBuf, Chr(0)) - start
Loop
End If
Set GetIniSections = retValues
End Function
Se non specifichi il percorso del File, ma solo il nome del tuo .INI di default cerca nella Dir del progetto, poi nella dir di sistema (c:\windows).