Um bestimmte Einstellungen in Ihrem Programm zu speichern können Sie neben der Verwaltung von INI-Dateien auch die Registrierdatenbank verwenden. Der nachfolgende Tipp zeigt, wie Sie einen Schlüssel in der Windows-Registry anlegen und entsprechende Werte speichern und wieder auslesen können. Nicht mehr benötigte Einträge lassen sich auch wieder löschen. ' zunächst alle benötigten API-Deklarationen Private Declare Function RegOpenKey Lib "advapi32.dll" _ Alias "RegOpenKeyA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String, _ phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32.dll" _ Alias "RegQueryValueExA" ( _ ByVal hKey As Long, _ ByVal lpValueName As String, _ ByVal lpReserved As Long, _ lpType As Long, _ lpData As Any, _ lpcbData As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" _ Alias "RegSetValueExA" ( _ ByVal hKey As Long, _ ByVal lpValueName As String, _ ByVal Reserved As Long, _ ByVal dwType As Long, _ lpData As Any, _ ByVal cbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" ( _ ByVal hKey As Long) As Long Private Declare Function RegCreateKey Lib "advapi32.dll" _ Alias "RegCreateKeyA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String, _ phkResult As Long) As Long Private Declare Function RegDeleteValue Lib "advapi32.dll" _ Alias "RegDeleteValueA" ( _ ByVal hKey As Long, _ ByVal lpValueName As String) As Long Const HKEY_CURRENT_USER = &H80000001 Const REG_SZ = 1 Const REG_BINARY = 3 ' Wert (String/Text) für einen bestimmten ' Schlüsselnamen speichern. Sollte der Schlüssel nicht ' existieren, wird dieser autom. erstellt. ' ' Parameterbeschreibung ' --------------------- ' hKey (Hauptschlüssel) : z.B. HKEY_CURRENT_USER ' sPath (Schlüsselpfad) : z.B. MeineAnwendung ' sValue (Schlüsselname): z.B. Path ' iData (Schlüsselwert) : z.B. c:\programme\MeineAnwendung Sub fStringSpeichern(hKey As Long, sPath As String, _ sValue As String, iData As String) Dim vRet As Variant RegCreateKey hKey, sPath, vRet RegSetValueEx vRet, sValue, 0, REG_SZ, ByVal iData, _ Len(iData) RegCloseKey vRet End Sub ' Wert (Binär 0-255) für einen bestimmten ' Schlüsselnamen speichern. Sollte der Schlüssel nicht ' existieren, wird dieser autom. erstellt. ' ' Parameterbeschreibung ' --------------------- ' hKey (Hauptschlüssel) : z.B. HKEY_CURRENT_USER ' sPath (Schlüsselpfad) : z.B. MeineAnwendung ' sValue (Schlüsselname): z.B. Code ' iData (Schlüsselwert) : z.B. 220 Sub fStringSpeichernLong(hKey As Long, sPath As String, _ sValue As String, iData As String) Dim vRet As Variant RegCreateKey hKey, sPath, vRet RegSetValueEx vRet, sValue, 0, REG_BINARY, _ CByte(iData), 4 RegCloseKey vRet End Sub ' Wert für einen bestimmten ' Schlüsselnamen auslesen. ' ' Parameterbeschreibung ' --------------------- ' hKey (Hauptschlüssel) : z.B. HKEY_CURRENT_USER ' sPath (Schlüsselpfad) : z.B. MeineAnwendung ' sValue (Schlüsselname): z.B. Path ' Rückgabewert : z.B. c:\programme\MeineAnwendung Function fWertLesen(hKey As Long, sPath As String, _ sValue As String) Dim vRet As Variant RegOpenKey hKey, sPath, vRet fWertLesen = fRegAbfrageWert(vRet, sValue) RegCloseKey vRet End Function ' Wird von "fWertLesen" aufgerufen und gibt den Wert ' eines Schlüsselnamens zurück. Hierbei wird autom. ' ermittelt, ob es sich um einen String oder Binärwert ' handelt. Function fRegAbfrageWert(ByVal hKey As Long, _ ByVal sValueName As String) As String Dim sBuffer As String Dim lRes As Long Dim lTypeValue As Long Dim lBufferSizeData As Long Dim iData As Integer lRes = RegQueryValueEx(hKey, sValueName, 0, _ lTypeValue, ByVal 0, lBufferSizeData) If lRes = 0 Then If lTypeValue = REG_SZ Then sBuffer = String(lBufferSizeData, Chr$(0)) lRes = RegQueryValueEx(hKey, sValueName, 0, _ 0, ByVal sBuffer, lBufferSizeData) If lRes = 0 Then fRegAbfrageWert = Left$(sBuffer, _ InStr(1, sBuffer, Chr$(0)) - 1) End If ElseIf lTypeValue = REG_BINARY Then lRes = RegQueryValueEx(hKey, sValueName, 0, _ 0, iData, lBufferSizeData) If lRes = 0 Then fRegAbfrageWert = iData End If End If End If End Function ' Löschen eines Schlüsselnamens ' ' Parameterbeschreibung ' --------------------- ' hKey (Hauptschlüssel) : z.B. HKEY_CURRENT_USER ' sPath (Schlüsselpfad) : z.B. MeineAnwendung ' sValue (Schlüsselname): z.B. Path Sub fWerteLoeschen(hKey As Long, sPath As String, _ sValue As String) Dim vRet As Variant RegCreateKey hKey, sPath, vRet RegDeleteValue vRet, sValue RegCloseKey vRet End Sub Beispiel: ' zuletzt eingestellten Drucker ermitteln Dim prnName As String prnName = fWertLesen(HKEY_CURRENT_USER, _ "MeineAnwendung", "Drucker") ' Wenn noch kein Eintrag gespeichert ist, ' soll der Standard-Drucker verwendet werden If prnName = "" Then prnName = Printer.DeviceName ' Druckerauswahl... ... ' Auswahl speichern fStringSpeichern HKEY_CURRENT_USER, "MeineAnwendung", _ "Drucker", prnName Um nicht mehr benötigte Einträge in der Registry wieder zu löschen, steht die Funktion fWerteLoeschen zur Verfügung. ' Löschen der Druckerauswahl fWerteLoeschen HKEY_CURRENT_USER, "MeineAnwendung", _ "Drucker" Dieser Tipp wurde bereits 79.101 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |