GetProcAddress

Aus API-Wiki
Wechseln zu: Navigation, Suche

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

Quelle

MSDN US-Libary