Obtient le handle d'un module spécifié
#include <WinAPISys.au3>
_WinAPI_GetModuleHandle ( $sModuleName )
$sModuleName | Les noms d'un module Win32 (un fichier .dll ou .exe). Si l'extension du nom de fichier est omis, par défaut, l'extension .dll est ajoutée. La chaîne de nom de fichier peut inclure un caractère point (.) pour indiquer que le nom du module n'a pas d'extension. La chaîne n'a pas à spécifier un chemin. Le nom est comparé (indépendamment de la casse) aux noms des modules actuellement mappés dans l'espace d'adressage du processus appelant. Si ce paramètre est le mot-clé Null alors la fonction retourne le handle de fichier utilisé pour créer le processus appelant. |
Succès: | Retourne le handle du module spécifié |
Échec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations supplémentaires sur l'erreur |
Consultez GetModuleHandle dans la librairie MSDN.
#include <MsgBoxConstants.au3> #include <StructureConstants.au3> #include <WinAPIConstants.au3> #include <WinAPISys.au3> #include <WindowsConstants.au3> Global $g_hHook, $g_hStub_KeyProc, $g_sBuffer = "" Example() Func Example() OnAutoItExitRegister("Cleanup") Local $hMod $g_hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam") $hMod = _WinAPI_GetModuleHandle(0) $g_hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($g_hStub_KeyProc), $hMod) MsgBox($MB_SYSTEMMODAL, "", "Cliquez sur OK, puis dans notepad tapez..." & _ @CRLF & @CRLF & "Jon" & @CRLF & "AutoIt" & @CRLF & @CRLF & "Pressez Esc pour arrêter le script") Run("notepad.exe") WinWait("[CLASS:Notepad]") WinActivate("[CLASS:Notepad]") While 1 Sleep(10) WEnd EndFunc ;==>Example Func EvaluateKey($iKeycode) If (($iKeycode > 64) And ($iKeycode < 91)) _ ; a - z Or (($iKeycode > 96) And ($iKeycode < 123)) _ ; A - Z Or (($iKeycode > 47) And ($iKeycode < 58)) Then ; 0 - 9 $g_sBuffer &= Chr($iKeycode) Switch $g_sBuffer Case "Jon" ToolTip("Que voulez-vous dire?") Case "AutoIt" ToolTip("AutoIt Rocks") EndSwitch ElseIf ($iKeycode > 159) And ($iKeycode < 164) Then Return ElseIf ($iKeycode = 27) Then ; touche Esc Exit Else $g_sBuffer = "" EndIf EndFunc ;==>EvaluateKey ;=========================================================== ; Fonction de rappel ;=========================================================== Func _KeyProc($nCode, $wParam, $lParam) Local $tKEYHOOKS $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam) If $nCode < 0 Then Return _WinAPI_CallNextHookEx($g_hHook, $nCode, $wParam, $lParam) EndIf If $wParam = $WM_KEYDOWN Then EvaluateKey(DllStructGetData($tKEYHOOKS, "vkCode")) Else Local $iFlags = DllStructGetData($tKEYHOOKS, "flags") Switch $iFlags Case $LLKHF_ALTDOWN ConsoleWrite("$LLKHF_ALTDOWN" & @CRLF) Case $LLKHF_EXTENDED ConsoleWrite("$LLKHF_EXTENDED" & @CRLF) Case $LLKHF_INJECTED ConsoleWrite("$LLKHF_INJECTED" & @CRLF) Case $LLKHF_UP ConsoleWrite("$LLKHF_UP: scanCode - " & DllStructGetData($tKEYHOOKS, "scanCode") & @TAB & "vkCode - " & DllStructGetData($tKEYHOOKS, "vkCode") & @CRLF) EndSwitch EndIf Return _WinAPI_CallNextHookEx($g_hHook, $nCode, $wParam, $lParam) EndFunc ;==>_KeyProc Func Cleanup() _WinAPI_UnhookWindowsHookEx($g_hHook) DllCallbackFree($g_hStub_KeyProc) EndFunc ;==>Cleanup