GetProcAddress
GetProcAddress gibt die Adresse einer von einem im eigenen Prozess liegenden Modul exportierten Funktion zurück.
Declare Function GetProcAddress Lib "kernel32.dll" ( _
ByVal hModule As Long, _
ByVal strProcName As String) As Long
Parameter
hModule
- Handle zum jeweiligen Modul. Dieses Handle kann zum Beispiel über LoadLibrary oder GetModuleHandle bezogen werden.
strProcName
- Name der gesuchten Funktion.
Rückgabe
Die Funktion gibt bei Erfolg die Adresse der Funktion, den Wert 0 bei Misserfolg zurück. In diesem Fall können weitere Fehlerinformationen mit Err.LastDLLError ausgelesen werden.
Beispiel
Dim lngMsgBoxAddr As Long
Dim hUser32 As Long
hUser32 = GetModuleHandle("user32.dll")
lngMsgBoxAddr = GetProcAddress(hUser32, "MessageBoxA")
Hinweise
Um die ermittelte Funktion aus Visual Basic aufzurufen, sind weitere API-Aufrufe von Nöten. Relativ einfach geht es noch, wenn die Funktion genau vier Argumente mit dem Datentyp Long erwartet, da sich dann CallWindowProc zum Aufruf zweckentfremden lässt:
Result = CallWindowProc(hFunction, Argument1, Argument2, Argument3, Argument4)
Falls die Anzahl der Argumente abweicht, wird es um einiges komplizierter. Tipp 692 zeigt, wie eine Funktion mit beliebig vielen Argumenten aufgerufen werden kann.
Betriebssysteme
- Windows 95 / 98 / Me
- Windows NT 4.0 / 2000 / XP
- Windows Vista
Verweise
MSDN US-Libary - GetProcAdress