Appelle dynamiquement une fonction dans une DLL.
DllCall ( "dll", "return type", "function" [, type1, param1 [, type n, param n]] )
dll | Le nom du fichier de la DLL à utiliser, par exemple "user32.dll". Le handle obtenu à partir de DllOpen peut également être utilisé (Voir Remarques). |
return type | Le type de retour de la fonction (Voir ci-dessous). |
function | Le nom, par exemple. "MessageBox" ou la valeur ordinale, par exemple 62, de la fonction à appeler dans la DLL. |
type1 | [optionnel] Le type du paramètre (Voir Remarques). |
param1 | [optionnel] Le paramètre actuel (Voir Remarques). |
type n | [optionnel] Le type du n-ième paramètre (Voir Remarques). |
param n | [optionnel] Le n-ième paramètre actuel (Voir Remarques). |
Type | Détails |
NONE | aucune valeur (valable uniquement pour le type de retour - l'équivalent de vide en C) |
BYTE | 8 bits entiers non signé |
BOOLEAN | 8 bits entiers non signé |
SHORT | 16 bits entiers |
USHORT | 16 bits entiers non signé |
WORD | 16 bits entiers non signé |
INT | 32 bits entiers |
LONG | 32 bits entiers |
BOOL | 32 bits entiers |
UINT | 32 bits entiers non signé |
ULONG | 32 bits entiers non signé |
DWORD | 32 bits entiers non signé |
INT64 | 64 bits entiers |
UINT64 | 64 bits entiers non signé |
PTR | un pointeur général (void *) |
HWND | un handle de fenêtre (pointeur) |
HANDLE | un handle (pointeur) |
FLOAT | une simple précision sur la virgule flottante du nombre |
DOUBLE | une double précision sur la virgule flottante du nombre |
INT_PTR, LONG_PTR, LRESULT, LPARAM | un entier assez grand pour contenir un pointeur lors de l'exécution sur les 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 sur les versions x86 ou x64 de AutoIt. |
STR | une chaîne de caractères ANSI (un minimum de 65536 caractères est attribué). |
WSTR | une chaîne de caractères Unicode large (un minimum de 65 536 caractères est attribué). |
STRUCT | structure créée avec DllStructCreate() |
* | Ajouter * à la fin d'un autre type pour le passer par référence. Par exemple "int*" passe un pointeur en type "int". |
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 |
Succès: | Retourne un tableau. Voir Remarques. |
Échec: | Définit @error <> 0. |
@error: | 1 = impossible d'utiliser le fichier DLL 2 = "type de retour" inconnu 3 = la fonction n'a pas été trouvée dans le fichier DLL 4 = mauvais numéro de paramètres 5 = mauvais paramètre. |
DllCallbackFree, DllCallbackGetPtr, DllCallbackRegister, DllClose, DllOpen, DllStructCreate, DllStructGetPtr
; Appel direct de l'API MessageBox. DllCall("user32.dll", "int", "MessageBox", _ "hwnd", 0, _ ; Handle de la fenêtre parent "str", "Some text", _ ; Le texte de la zone de message "str", "Some title", _ ; Le titre de la boîte de message "int", 0) ; Flags pour la boîte de message.
#include <MsgBoxConstants.au3> ; Appel d'une fonction qui modifie les paramètres Local $iPID = Run("notepad") Local $hWnd = WinWait("[CLASS:Notepad]", "", 2000) If $hWnd = 0 Then ; Timeout s'est produit. Exit MsgBox($MB_SYSTEMMODAL, Default, "Impossible de démarrer le Bloc-notes!") EndIf Local $aResult = DllCall("user32.dll", "int", "GetWindowText", "hwnd", $hWnd, "str", "", "int", 32768) MsgBox($MB_SYSTEMMODAL, Default, "Nombre de caractères retournés: " & $aResult[0]) MsgBox($MB_SYSTEMMODAL, Default, "Texte (retourné dans le paramètre 2): '" & $aResult[2] & "'") WinClose($hWnd)
#include <MsgBoxConstants.au3> ; Consulte PickIconDlg Windows. Local $sFileName = @SystemDir & '\shell32.dll' ; Crée une structure pour stocker l'index de l'icône Local $tIcon = DllStructCreate("int") Local $tString = DllStructCreate("wchar[260]") Local $iStructsize = DllStructGetSize($tString) / 2 DllStructSetData($tString, 1, $sFileName) ; Exécute le PickIconDlg - « 62 » est la valeur ordinale pour cette fonction DllCall("shell32.dll", "none", 62, _ "hwnd", 0, _ "ptr", DllStructGetPtr($tString), _ "int", $iStructsize, _ "ptr", DllStructGetPtr($tIcon)) $sFileName = DllStructGetData($tString, 1) Local $iIconIndex = DllStructGetData($tIcon, 1) ; Consulte le nouveau nom de fichier et l'index de l'icône MsgBox($MB_SYSTEMMODAL, "Info", "Dernier fichier sélectionné: " & $sFileName & @CRLF & "Icon-Index: " & $iIconIndex)