###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@@