Rubrik: COM/OLE/Registry/DLL · Sonstiges | VB-Versionen: VB4, VB5, VB6 | 17.11.03 |
Prüfen ob DLL vorhanden und DLL-Typ ermitteln Dieser Tipp zeigt, wie sich prüfen lässt, ob eine bestimmte DLL vorhanden ist. Zudem ermittelt die Funktion "DLLAvail" noch den Typ der DLL. | ||
Autor: Dieter Otter | Bewertung: | Views: 20.631 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Unser heutiger Tipp zeigt, wie sich prüfen lässt, ob eine bestimmte DLL vorhanden ist. Zudem ermittelt die Funktion noch den Typ der DLL. Als Rückgabe liefert die Funktion dann entweder "NoDLL", "StandardDLL" oder "ActiveXDLL".
Fügen Sie nachfolgenden Code in ein Modul ein:
Option Explicit ' Benötrite API-Deklarationen Private Declare Function LoadLibrary Lib "kernel32" _ Alias "LoadLibraryA" ( _ ByVal lpLibFileName As String) As Long Private Declare Function FreeLibrary Lib "kernel32" ( _ ByVal hLibModule As Long) As Long Private Declare Function GetProcAddress Lib "kernel32" ( _ ByVal hModule As Long, _ ByVal lpProcName As String) As Long ' DLL-Typ Public Enum DLLType NoDLL = 0 StandardDLL = 1 ActiveXDLL = 2 End Enum
' DLL vorhanden? ' Wenn ja, Typ ermitteln und zurückgeben Public Function DLLAvail(sFile As String) As DLLType Dim nHandle As Long Dim sProcedure As String ' DLL laden nHandle = LoadLibrary(sFile) If nHandle <> 0 Then ' jepp, es ist eine DLL DLLAvail = StandardDLL ' jetzt prüfen, ob es eine Standard-DLL ' oder ActiveX-DLL ist sProcedure = "DllRegisterServer" If CBool(GetProcAddress(nHandle, sProcedure)) = True Then DLLAvail = ActiveXDLL End If ' Speicher wieder freigeben Call FreeLibrary(nHandle) Else DLLAvail = NoDLL End If End Function
Die Funktion DLLAvail erwartet als Parameter den Namen der DLL-Datei. Wird kein Pfad angegeben, wird in den Systempfaden nach der DLL gesucht.
Beispiel:
' Prüfen, ob die XP-spezifische "uxtheme.dll" vorhanden ist Dim bAvail As Boolean bAvail = (DLLAvail("uxtheme.dll") <> NoDLL)
Weiteres Beispiel:
Sie möchten ermitteln, ob es sich bei einer bestimmten DLL um eine Standard-DLL oder eine ActiveX-DLL handelt.
Dim nDLLType As DLLType nDLLType = DLLAvail("c:\windows\system\myDLL.DLL") Select Case nDLLType Case NoDLL MsgBox "DLL nicht gefunden oder keine echte DLL-Datei" Case StandardDLL MsgBox "Standard-DLL" Case ActiveXDLL MsgBox "ActiveX-DLL" End Select