Mappe un module exécutable spécifié dans l'espace d'adressage d'un processus appelant
#include <WinAPIRes.au3>
_WinAPI_LoadLibraryEx ( $sFileName [, $iFlags = 0] )
$sFileName | Nom d'un module exécutable Win32 (soit une DLL, soit un fichier exe). Le nom spécifié est le nom du fichier du module exécutable. |
$iFlags | [optionnel] Spécifie l'action à prendre lors du chargement du module. Ce paramètre peut prendre l'une des valeurs suivantes: $DONT_RESOLVE_DLL_REFERENCES - Si cette valeur est utilisée et si le module exécutable est une DLL, le système n'appelle pas DllMain pour l'initialisation et la terminaison du processus et du thread. De plus, le système ne charge pas des modules exécutables supplémentaires qui sont référencés par le module spécifié. $LOAD_LIBRARY_AS_DATAFILE - Si cette valeur est utilisée, le système mappe le fichier dans l'espace d'adressage du processus appelant comme s'il s'agissait d'un fichier de données. Rien n'est fait pour exécuter ou préparer l'exécution du fichier mappé. $LOAD_WITH_ALTERED_SEARCH_PATH - Si cette valeur est utilisée, et si $filename spécifie un chemin, le système utilise la stratégie de recherche de fichier alternatif pour trouver les modules exécutables associés dont le module spécifié provoque le chargement. |
Succès: | Retourne le handle du module exécutable |
Échec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
Les constantes ci-dessus nécessitent WinAPIConstants.au3
_WinAPI_FreeLibrary, _WinAPI_LoadLibrary, _WinAPI_LoadString
Consultez LoadLibraryEx dans la librairie MSDN.
#include <GUIConstantsEx.au3> #include <GuiReBar.au3> #include <WinAPIError.au3> #include <WinAPIRes.au3> #include <WindowsConstants.au3> Global $g_idMemo Example() Func Example() Local $hGUI, $idInput, $id_Get, $hReBar, $hInstance, $sText, $iMsg ; Crée une GUI $hGUI = GUICreate("WinAPI", 400, 396) $idInput = GUICtrlCreateInput("4209", 0, 0, 100, 20) ; Crée un contrôle conteneur de ruban $hReBar = _GUICtrlRebar_Create($hGUI, BitOR($CCS_TOP, $WS_BORDER, $RBS_VARHEIGHT, $RBS_AUTOSIZE, $RBS_BANDBORDERS)) $g_idMemo = GUICtrlCreateEdit("", 2, 55, 396, 200, BitOR($WS_VSCROLL, $WS_HSCROLL)) GUICtrlSetFont($g_idMemo, 10, 400, 0, "Courier New") ; Ajoute un ruban contenant le contrôle Input _GUICtrlRebar_AddBand($hReBar, GUICtrlGetHandle($idInput), 120, 200, "String ID:") $id_Get = GUICtrlCreateButton("Get String", 0, 0, 90, 20) ; Ajoute un ruban contenant le contrôle Button _GUICtrlRebar_AddBand($hReBar, GUICtrlGetHandle($id_Get), 120, 200) GUISetState(@SW_SHOW) $iMsg = GUIGetMsg() While $iMsg <> $GUI_EVENT_CLOSE If $iMsg = $id_Get Then GUICtrlSetData($g_idMemo, "") $hInstance = _WinAPI_LoadLibraryEx("shell32.dll", $LOAD_LIBRARY_AS_DATAFILE) If $hInstance Then $sText = _WinAPI_LoadString($hInstance, GUICtrlRead($idInput)) If Not @error Then MemoWrite('Got the String (chars: '& @extended & '): '& @CRLF & $sText) Else MemoWrite("Last Error Message: " & @CRLF & _WinAPI_GetLastErrorMessage()) EndIf MemoWrite(@CRLF & "Success Freeing? " & _WinAPI_FreeLibrary($hInstance)) EndIf EndIf $iMsg = GUIGetMsg() WEnd EndFunc ;==>Example ; Ecrit un message dans le contrôle Memo Func MemoWrite($sMessage = "") GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1) EndFunc ;==>MemoWrite