Functions > Process >


DllCallAddress

Appel dynamique d'une fonction � une adresse m�moire sp�cifique.

DllCallAddress ( "return type", address [, type1, param1 [, type n, param n]] )

Param�tres

return type Le type de retour de la fonction.
address L'adresse de la fonction. Si cette valeur n'est pas valide votre script bloquera!
type1 [optional] Le type du param�tre (Voir Remarques).
param1 [optional] Ce param�tre (Voir Remarques).
type n [optional] Le type du n-i�me param�tre (Voir Remarques).
param n [optional] Le n-i�me param�tre (Voir Remarques).


Les types valides sont:
Type D�tails
NONE aucune valeur (valide seulement pour le type de retour - �quivalent � void en C)
BYTE un entier 8 bits non sign�
BOOLEAN un entier 8 bits non sign�
SHORT un entier 16 bits
USHORT un entier 16 bits non sign�
WORD un entier 16 bits non sign�
INT un entier 32 bits
LONG un entier 32 bits
BOOL un entier 32 bits
UINT un entier 32 bits non sign�
ULONG un entier 32 bits non sign�
DWORD un entier 32 bits non sign�
INT64 un entier 64 bits
UINT64 un entier 64 bits non sign�
PTR un pointeur g�n�ral (void *)
HWND un handle de fen�tre (pointeur)
HANDLE un handle (pointeur)
FLOAT un nombre simple pr�cision en virgule flottante
DOUBLE un nombre double pr�cision en virgule flottante
INT_PTR, LONG_PTR, LRESULT, LPARAM un entier assez grand pour contenir un pointeur lors de l'ex�cution des versions x86 ou x64 de AutoIt.
UINT_PTR, ULONG_PTR, DWORD_PTR, WPARAM un entier non sign� assez grand pour contenir un pointeur lors de l'ex�cution des versions x86 ou x64 de AutoIt.
STR une cha�ne ANSI (un minimum de 65536 caract�res sont allou�s).
WSTR une cha�ne de caract�res larges UNICODE (un minimum of 65536 caract�res sont allou�s).
STRUCT structure cr��e avec DllStructCreate()
* Ajouter * � la fin d'un autre type pour le passer en r�f�rence. Par exemple "int*" passe un pointeur dans un type "int".


Conversions des types Windows API vers les types AutoIt:
WINDOWS API Type Type AutoIt
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

Pour utiliser une structure imbriqu�e dans une structure, vous devez red�finir la structure imbriqu�e. Par exemple, une structure contenant deux structures POINT ("long;long") serait d�clar� comme "long;long;long;long". Les deux premi�res valeurs long correspondent � la premi�re structure POINT et la seconde de deux valeurs correspondent � la seconde structure POINT.

Pour davantage de types de l'API Windows Consultez MSDN .

Valeur de retour

Succ�s: Retourne un tableau. Voir Remarques.
�chec: D�finit @error <> 0.
@error: 2 = type de retour inconnu,
4 = erreur sur le nombre de param�tres,
5 = erreur sur un param�tre
See remarks.

Remarques

Par d�faut, AutoIt utilise la m�thode d'appel 'stdcall'. Pour utiliser la m�thode 'cdecl' placer ':cdecl' apr�s le type de retour.
Si l'appel de la fonction �choue alors le flag @error <> 0.
Sinon un tableau est retourn� qui contient la valeur de retour de la fonction et une copie de tous les param�tres (y compris les param�tres que la fonction a modifi�s lors d'un passage par r�f�rence).
$return[0] = valeur de retour de la fonction
$return[1] = param1
$return[2] = param2
...
$return[n] = paramn

Note Sp�ciale: C'est une fonction avanc�e. Une utilisation incorrecte de cette fonction peut bloquer AutoIt. Avant d'utiliser cette fonction assurez-vous que DllCall() ne fait pas ce dont vous avez besoin.

En relation

DllCall, DllCallbackFree, DllCallbackGetPtr, DllCallbackRegister, DllClose, DllOpen, DllStructCreate, DllStructGetPtr

Exemple

#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <WinAPISysWin.au3>
#include <WindowsConstants.au3>

Example()

Func Example()
    ; Active le mode �v�nement GUI.
    Opt("GUIOnEventMode", 1)

    ; Cr�e une simple GUI.
    Local $hWnd = GUICreate("Exemple DllCallAddress")

    ; Cr�e le gestionnaire de l'�v�nement close.
    GUISetOnEvent($GUI_EVENT_CLOSE, "OnClose")

    ; Affiche la GUI.
    GUISetState(@SW_SHOWNORMAL, $hWnd)

    ; Obtient un pointeur sur la fen�tre de WindowsProc().
    Local $pWndProc = _WinAPI_GetWindowLong($hWnd, $GWL_WNDPROC)

    ; Indique � l'utilisateur ce qui va se passer.
    MsgBox($MB_SYSTEMMODAL, "DllCallAddress Example Msg", "Lorsque vous cliquerez sur OK la fen�tre de test se fermera.")

    ; Explicitement g�n�re un �v�nement WM_CLOSE et le passe directement � WindowProc().
    ; Cela ne devrait jamais �tre fait dans une application r�elle (utilisez  _SendMessage() � la place),
    ; mais cela montre comment utiliser la fonction.
    DllCallAddress("LRESULT", $pWndProc, "HWND", $hWnd, "UINT", $WM_CLOSE, "WPARAM", 0, "LPARAM", 0)
EndFunc   ;==>Example

Func OnClose()
    GUIDelete(@GUI_WinHandle)
    MsgBox($MB_SYSTEMMODAL, "DllCallAddress Example Msg", "Ev�nement Close re�u, la fen�tre de test devrait maintenant se fermer.")
EndFunc   ;==>OnClose