Rubrik: Dateisystem · INI-Dateien | VB-Versionen: VB5, VB6 | 17.06.02 |
INI-Dateien für mehrere Benutzer Eine erweiterte INI-Funktion mit der sich Einstellungen für den aktuellen (oder für alle) Benutzer abspeichern lassen. | ||
Autor: Richard Reiffinger | Bewertung: | Views: 20.452 |
www.richistudios.com | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Auf vielen Computern sind oftmals mehrere Benutzer eingerichtet. Daher ist es oft erforderlich sein, dass jeder Benutzer seine eigenen Einstellungen vornehmen kann. Dies ist mit INI-Dateien, welcher meiner Meinung nach sowieso praktischer als die Regestry sind, natürlich ebenfalls möglich.
Alles, was Sie hierzu benötigen, ist ein Modul und folgender Code:
' API's für Lesen/und Schreiben von INI-Dateien 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 ' GetUserName-Funktion Private Declare Function API_GetUserName Lib "advapi32.dll" _ Alias "GetUserNameA" ( _ ByVal lpBuffer As String, _ nSize As Long) As Long ' INI-Datei Public INIFileName As String
' Gibt den Namen des aktuell angemeldeten Benutzers ' zurück Public Function GetUserName() As String GetUserName = String(100, Chr$(0)) ' Erstelle Puffer API_GetUserName GetUserName, 100 GetUserName = Left$(GetUserName, _ InStr(GetUserName, Chr$(0)) - 1) End Function
' Liest Informationen aus INI-Dateien ' Key = Schlüssel ' Paragraph = Abschnitt (Optional) ' PublicSetting = Gibt an ob die Einstellung für alle ' Benutzer ist oder nur für den aktuellen Public Function INILesen(Key As String, _ Optional DefaultValue As String = "", _ Optional Paragraph As String = "Einstellungen", _ Optional PublicSetting As Boolean = False) As String If PublicSetting Then ' globale Einstellung (alle User) Paragraph = "Public\" & Paragraph Else ' Userdefinierte Einstellung Paragraph = GetUserName & "\" & Paragraph End If If INIFileName = "" Then _ INIFileName = App.Path & "\" & App.EXEName & ".INI" INILesen = String$(255, 0) If Key <> "" Then Call GetPrivateProfileString(Paragraph, Key, "", _ INILesen, 255&, INIFileName) End If INILesen = Replace(INILesen, Chr(0), "") If INILesen = "" Then INILesen = DefaultValue End Function
' Schreibt Informationen in INI-Dateien ' Key = Schlüssel ' Value = Wert (Optional) ' Paragraph = Abschnitt (Optional) ' PublicSetting = Gibt an ob die Einstellung für alle ' Benutzer ist oder nur für den aktuellen Public Sub INISchreiben(Key As String, _ Optional Value As String = "", _ Optional Paragraph As String = "Einstellungen", _ Optional PublicSetting As Boolean = False) If PublicSetting Then ' globale Einstellung (alles User) Paragraph = "Public\" & Paragraph Else ' Userdefinierte Einstellung Paragraph = GetUserName & "\" & Paragraph End If If INIFileName = "" Then _ INIFileName = App.Path & "\" & App.EXEName & ".INI" If Key <> "" Then WritePrivateProfileString Paragraph, Key, Value, _ INIFileName End If End Sub
Anmerkung
Benutzerdefinierte Einstellungen werden in der INI-Datei wie folgt abgelegt:
[UserName\Einstellungen] ...
Und globale Einstellungen so:
[Public\Einstellungen] ...