Problemstellung:
Für 32Bit und 64Bit Office Versionen
Diese Bsp-DB beschäftigt sich mit Lösungen um mit VB(A) die Windows Registrydatei zu lesen
bzw. bearbeiten zu können
Um mittels VB(A) mit der Registry arbeiten zu können sind eine Vielzahl von API-Funktionen erforderlich.
Alle erforderliche Aufrufe, Auflistungen und Funktionen befinden sich im Modul: mod_Registry der Bsp-DB
Um alle Funktionen zu verwenden ist es nur erforderlich das Modul in die betreffende DB zu importieren.
Aber wie geht das? Das erfahrt Ihr im Folgenden.
Voraussetzungen:
Das Bsp ist ab A00 lauffähig
Einzige Einschränkung ist unter Windows Vista das Auslesen der ProductId (s. Bsp-DB).
Dies ist nicht möglich da dieser Schlüssel nicht existiert
Leider ist es nicht möglich den Registry-Editor zu öffnen und gleich einen ein kompletten Schlüssel mit zu geben
damit der Editor direkt dort hin springt.
Windows speichert aber den letzten aufgerufenen Schlüssel im Schlüssel:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\LastKey
Der folgende Code macht sich diesen Umstand zu nutze (s. mod_Regedit )
Unter Windws Vista tritt, eigenartigerweise, der Laufzeitfehler 5 beim Aufruf des
Registryeditors mittels Shell-Methode auf.
Deswegen ist zusätzlich die ShellExecute-Funktion mit enthalten.
#If VBA7 Then 'Code für 32 bit und 64 bit Office VBA 7 #If Win64 Then 'Code für 64-bit Office VBA 7 Declare PtrSafe Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As LongPtr, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nshowcmd As Long) As LongPtr #Else 'Code für 32-bit Office VBA 7 Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As Long, ByVal Ipoperation As String, ByVal Ipfile As String, ByVal Ipparameters As String, ByVal Ipdirectory As String, ByVal nshowcmd As Long) As Long #End If #Else 'Code für VBA 6 (32 bit) Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal Hwnd As Long, ByVal Ipoperation As String, ByVal Ipfile As String, ByVal Ipparameters As String, ByVal Ipdirectory As String, ByVal nshowcmd As Long) As Long #End If Public Sub Open_RegEdit(oFrm As Form, sRegkey As String) On Error GoTo Open_RegEdit_Error Dim sLastkey As String ' Dim DoOpenFile As Long ' Dim DoOpenFile2 As LongPtr #If VBA7 Then 'Code für 32 bit und 64 bit Office VBA 7 #If Win64 Then Dim DoOpenFile As LongPtr #Else Dim DoOpenFile As Long #End If #Else Dim DoOpenFile As Long #End If sLastkey = fWertLesen(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey") If sLastkey <> sRegkey Then fStringSpeichern HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Applets\Regedit", "LastKey", sRegkey End If Shell ("regedit.exe") On Error GoTo 0 Exit Sub Open_RegEdit_Error: If Err.Number = 5 Then DoOpenFile = ShellExecute(oFrm.Hwnd, vbNullString, "regedt32.exe", vbNullString, vbNullString, 1) ElseIf Err.Number = 53 Then Shell ("regedt32.exe") Else Dim strErrString As String strErrString = "Error Information..." & vbCrLf strErrString = strErrString & "Error#: " & Err.Number & vbCrLf strErrString = strErrString & "Description: " & Err.Description MsgBox strErrString, vbCritical + vbOKOnly, "Error in procedure Open_RegEdit of Modul Regedit" End If End Sub
Die Prozedur erwartet 2 Parameter.
oFrm = das Formular, meistens Me.
sRegKey = der Schlüssel zu dem gesprungen werden soll.
Zuerst wird der gespeicherte Schlüssel gelesen und mit dem übergebenen verglichen.
Sind diese ungleich wird der übergebene gespeichert und der Registryeditor geöffnet.
z.B.:
1 |
Open_RegEdit Me, "HKEY_CURRENT_USER\Software\TommyK\BspDB" |
In der Bsp-DB sind folgende Lösungen enthalten:
1. Auslesen der Windows ProductId (nicht bei Windows Vista)
2. Auslesen des Run-Keys (Autostart der Registry)
3. Lesen, Schreiben und Löschen eines Schlüssels.
4. Bsp. zum Speichern von Formularpostionen in der Registry
Für 32Bit und 64Bit Office Versionen
Arbeiten mit der Registry
ab A07
Die Zip-Datei enthält eine Version ab A07
Ähnliche Artikel
Weiterlesen...