###Function### DllCallAddress ###Description### Ruft eine Funktion an einer bestimmten Speicheradresse dynamisch auf.
Achtung: Dies ist eine fortgeschrittene Funktion. Falsche Benutzung dieser Funktion kann AutoIt zum Absturz bringen. Bevor diese Funktion verwendet wird sollte sicher sein, dass DllCall() nicht den gewünschten Zweck erfüllt.
###Syntax### DllCallAddress ( "return type", address [, type1, param1 [, type n, param n]] ) ###Parameters### @@ParamTable@@ return type Der Rückgabetyp der Funktion (siehe unten). address Die Adresse einer Funktion. Wenn dieser Wert ungültig ist, wird das AutoIt Abstürzen! type1 [optional] Der Typ des ersten Parameters (siehe Bemerkungen). param1 [optional] Der eigentliche erste Parameter (siehe Bemerkungen). type n [optional] Der Typ des n-ten Parameters (siehe Bemerkungen). param n [optional] Der eigentliche n-te Parameter (siehe Bemerkungen). @@End@@
Gültige Typen sind: @@ParamTable@@ Typ Details none kein Wert (nur für Rückgabetyp gültig - äquivalent zu void in C) BYTE ein vorzeichenloser 8 bit Integer BOOLEAN ein vorzeichenloser 8 bit Integer short ein 16 bit Integer USHORT ein vorzeichenloser 16 bit Integer WORD ein vorzeichenloser 16 bit Integer int ein 32 bit Integer long ein 32 bit Integer BOOL ein 32 bit Integer UINT ein vorzeichenloser 32 bit Integer ULONG ein vorzeichenloser 32 bit Integer DWORD ein vorzeichenloser 32 bit Integer INT64 ein 64 bit Integer UINT64 ein vorzeichenloser 64 bit Integer ptr ein allgemeiner Pointer (void *) HWND ein Fensterhandle (pointer) HANDLE ein Handle (pointer) float eine Gleitkommazahl mit einfacher Genauigkeit double eine Gleitkommazahl mit doppelter Genauigkeit INT_PTR, LONG_PTR, LRESULT, LPARAM ein Integer, groß genug um einen Pointer zu enthalten wenn die x86 oder x64 Versionen von AutoIt benutzt werden. UINT_PTR, ULONG_PTR, DWORD_PTR, WPARAM ein vorzeichenloser Integer, groß genug um einen Pointer zu enthalten wenn die x86 oder x64 Versionen von AutoIt benutzt werden. str ein ANSI String (ein Minimum von 65536 chars wird reserviert). wstr ein UNICODE wide character String (ein Minimum von 65536 chars wird reserviert). struct Struktur die mit DllStructCreate() erstellt wurde * Um einen Datentypen via Referenz (Pointer) zu übergeben muss * an den Datentyp angefügt werden. Beispiel: "int*" übergibt einen Pointer zu einem "int" Typ. @@End@@
Umwandlungen von Windows API Typen zu AutoIt Typen: @@ParamTable@@ WINDOWS API Typ AutoIt Typ LPCSTR/LPSTR str LPCWSTR/LPWSTR wstr LPVOID ptr LPxyz xyz* HINSTANCE handle HRESULT long LONGLONG/LARGE_INTEGER INT64 ULONGLONG/ULARGE_INTEGER UINT64 SIZE_T ULONG_PTR @@End@@ Um verschachtelte Strukturen innerhalb einer Struktur zu verwenden muss zuerst die verschachtelte Struktur neu definiert werden. Zum Beispiel würde eine Struktur die 2 POINT Strukturen ("long;long") enthält, als "long;long;long;long" deklariert werden. Die ersten zwei long Werte beziehen sich auf die erste POINT Struktur und die letzten zwei long Werte beziehen sich auf die zweite POINT Struktur. Für weitere Windows API Typen siehe MSDN. ###ReturnValue### @@ReturnTable@@ Success: @error = 0. Failure: setzt @error auf @error: 2 unbekannter "Rückgabetyp", 4 falsche Anzahl von Parametern, 5 falscher Parameter @@End@@ Siehe Bemerkungen. ###Remarks### Standardmäßig, benutzt AutoIt die 'stdcall' Aufrufmethode. Um die 'cdecl' Methode zu benutzen muss ein ':cdecl' nach dem Rückgabetyp angegeben werden. Falls die Funktion fehlschlägt, wird @error auf einen Wert ungleich Null gesetzt. Andernfalls wird ein Array zurückgegeben, dass den Rückgabewert der Funktion zusammen mit einer Kopie aller Parameter (inklusive der Parameter die die Funktion möglicherweise verändert hat wenn sie via Referenz übergeben wurden). $return[0] = Rückgabewert der Funktion $return[1] = param1 $return[2] = param2 ... $return[n] = paramn ###Related### DllCall, DllCallbackFree, DllCallbackGetPtr, DllCallbackRegister, DllOpen, DllClose, DllStructCreate, DllStructGetPtr ###Example### @@IncludeExample@@