Haben Sie sich auch schon einmal gefragt, wie man prüfen kann, in welchem Verzeichnis sich eine bestimmte ActiveX-Komponente befindet? Hierzu braucht man lediglich den Klassennamen der Komponenten zu wissen. Ist die ActiveX-Komponente bereits auf dem System installiert und registriert, legt Windows den dazugehörigen Pfad in der Registry ab. Unser heutiger Tipp zeigt, wie man anhand des Klassennamen das Verzeichnis der ActiveX-Komponente ermitteln kann. Fügen Sie hierzu nachfolgenden Code in ein Modul: Option Explicit ' benötigte API-Deklarationen Private Const HKEY_CLASSES_ROOT As Long = &H80000000 Private Const KEY_QUERY_VALUE = &H1 Private Const KEY_ENUMERATE_SUB_KEYS = &H8 Private Const KEY_NOTIFY = &H10 Private Const KEY_READ = KEY_QUERY_VALUE Or _ KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Private Const REG_SZ = 1 Private Const REG_DWORD = 4 Private Const ERROR_SUCCESS = 0& Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _ Alias "RegOpenKeyExA" ( _ ByVal hKey As Long, _ ByVal lpSubKey As String, _ ByVal ulOptions As Long, _ ByVal samDesired As Long, _ phkResult As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" ( _ ByVal hKey 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 Any) As Long ' Wert aus Registry auslesen Public Function GetValue(ByVal hKey As Long, _ ByVal sKey As String, _ ByVal sField As String, _ vValue As Variant) As Boolean Dim nResult As Long Dim nKeyOpen As Long Dim dwType As Long Dim nValue As Long Dim nLen As Long Dim sBuffer As String GetValue = False ' Registry-Schlüssel öffnen nResult = RegOpenKeyEx(hKey, sKey, 0, KEY_READ, nKeyOpen) If nResult <> ERROR_SUCCESS Then Exit Function ' Werte-Typ bestimmen nResult = RegQueryValueEx(nKeyOpen, sField, 0&, _ dwType, ByVal 0&, nLen) If nResult = ERROR_SUCCESS Then Select Case dwType Case REG_SZ ' String sBuffer = Space$(nLen + 1) nResult = RegQueryValueEx(nKeyOpen, sField, 0&, _ dwType, ByVal sBuffer, nLen) If nResult = ERROR_SUCCESS Then vValue = Left$(sBuffer, nLen - 1) End If Case REG_DWORD ' DWord nLen = 4 nResult = RegQueryValueEx(nKeyOpen, sField, 0&, _ dwType, nValue, nLen) If nResult = ERROR_SUCCESS Then vValue = nValue End Select ' Schließen RegCloseKey nKeyOpen End If GetValue = (nResult = ERROR_SUCCESS) End Function ' Pfad anhand Klassennamen auslesen Public Function GetClassPath(ByVal sClass As String) Dim sValue As String Dim sPath As String If GetValue(HKEY_CLASSES_ROOT, sClass & "\Clsid", "", sValue) Then sPath = "CLSID\" & sValue If GetValue(HKEY_CLASSES_ROOT, sPath, "", sValue) Then sPath = sPath & "\InprocServer32" If GetValue(HKEY_CLASSES_ROOT, sPath, "", sValue) Then GetClassPath = sValue End If End If End If End Function Beispiel: Dim sPath As String sPath = GetClassPath("DAO.DBEngine.36") MsgBox sPath Oder: In welchem Verzeichnis befindet das Windows-Common-Control OCX (Version 6)? MsgBox GetClassPath("MSComctlLib.ListViewCtrl") Oder: ... Sie sehen schon: wenn die ActiveX-Komponente als solche im System registriert ist, lässt sich über den jeweiligen Klassennamen sehr einfach der Pfad zur ActiveX-Datei ermitteln. Dieser Tipp wurde bereits 22.822 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevGraph (VB/VBA) ![]() Grafische Auswertungen Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Tipp des Monats ![]() Dieter Otter Beliebige Zeichen am Anfang und Ende eines Strings entfernen Mit der Trim-Funktion lassen sich nicht nur Leerzeichen, sondern bei Bedarf auch beliebige Zeichen entfernen. Access-Tools Vol.1 ![]() Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||
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. |