Home > Visual Basic Classic > Windows > Prüfen ob Funktion in Dll existiert / vorhanden ist

Prüfen ob Funktion in Dll existiert / vorhanden ist

Veröffentlicht am 29.08.2008 von Sebastian Krogolewski

Artikelinformationen

Sprache:
Visual Basic 6
Datenbank:
keine

Artikel speichern

del.icioMister WongGoogleLinkarenaYiggSpurlFurl

Artikel bewerten

Bewertng:4.00 / 5 (1 mal bewertet)

Es gibt unmnegen an Dll Dateien in den verschiedensten Versionen. Bei den Versionswechseln kann es nun passieren das Funktionen wegfallen und als Folge davon funktioniert die Software nicht mehr. Mit der Win API und den Funktionen LoadLibraryA bzw. LoadLibraryW als LoadLibrary, GetProcAddress und FreeLibrary aus der Kernel32.Dll kann man dem Problem entgegen wirken.

1. Die Dll mit LoadLibrary laden.
2. Die Funktion aus der Dll mit GetProcAddress laden.
3. Die Dll mit FreeLibrary wieder freigeben.

 

Einbinden der benötigten API Funktionen LoadLibrary, GetProcAddress und FreeLibrary aus der Kernel32.Dll:

1
2
3
4
56
7
8
Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( _
    ByVal LibraryFileName As String) As Long
 
Private Declare Function GetProcAddress Lib "kernel32" ( _
    ByVal hModule As Long, ByVal FunctionName As String) As Long 
Private Declare Function FreeLibrary Lib "kernel32" ( _
    ByVal hLibModule As Long) As Long

 

VB Funktion
1
2
3
4
56
7
8
9
1011
12
13
14
1516
17
18
19
Public Function DLLFunctionExists(ByVal DllName As String, ByVal FunctionName As String) As Boolean
Dim hModule As Long
Dim lProcAddress As Long
 
'Bibliothek LadenhModule = LoadLibrary(DllName)
 
'Prüfen ob die Bibilothek geladen werden konnte
If (hModule <> 0) Then
    'Wenn die Bibliothek geladen wurde, dann die Adresse der Funktion ermitteln    lProcAddress = GetProcAddress(hModule, FunctionName)
    
    'Bibliothek wieder freigeben
    FreeLibrary hModule
        'Wenn Funktion vorhanden dann ist lProcAddress <> 0:
    DllFunctionExists = CBool(lProcAddress)
End If
End Function

 

DLLFunctionExists erwartet 2 Parameter:

DllName: Pfad + Dateiname der Dll Datei.

FunctionName: Name der Funktion welche geprüft werden soll.

 

Rückgabewert:

True: Funktion ist vorhanden / existiert.

False: Funktion ist nicht vorhanden / existiert nicht oder die Dll Datei konnte nicht gefunden werden.

Downloads

Suchbegriffe

VB6, Visual Basic, LoadLibraryA, LoadLibraryW, LoadLibrary

Suche