Définit une touche de raccourci du système
#include <WinAPISys.au3>
_WinAPI_RegisterHotKey ( $hWnd, $iID, $iModifiers, $vKey )
| $hWnd | Handle de la fenêtre qui recevra les messages WM_HOTKEY générés par la touche de raccourci. Si ce paramètre est 0, les messages WM_HOTKEY sont envoyés dans la file des messages du thread appelant et doivent être traitées dans la boucle de message. |
| $iID | Indique l'identifiant de la touche de raccourci. Une application doit spécifier une valeur d'id comprise entre 0x0000 par 0xBFFF. |
| $iModifiers | Indique les touches qui doivent être pressées en combinaison avec la touche spécifiée par le paramètre $vKey afin de générer le message d'WM_HOTKEY. Le paramètre $iModifiers peut être une combinaison des valeurs suivantes: $MOD_ALT $MOD_CONTROL $MOD_SHIFT $MOD_WIN Windows 7 ou version ultérieure $MOD_NOREPEAT |
| $vKey | Indique le code de touche virtuelle de la touche de raccourci ($VK_*). |
| Succès: | Retourne True. |
| Échec: | Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur. |
Quand une touche est enfoncée, le système recherche une coincidence avec toutes les touches de raccourci. Une fois une coincidence trouvée, le système envoie le message WM_HOTKEY dans la file des messages de la fenêtre avec laquelle la touche de raccourci est associée. Si la touche de raccourci n'est pas associée à une fenêtre, le message WM_HOTKEY est envoyé au thread associé à la touche de raccourci.
_WinAPI_RegisterHotKey() échoue si la touche indiquée pour la touche de raccourci a déjà été enregistrée par une autre touche de raccourci.
Dans Windows XP, si un raccourci clavier existe déjà avec les mêmes paramètres $hWnd et $iID, il est remplacé par la nouvelle touche de raccourci.
Dans Windows Vista et les versions ultérieures de Windows, si une touche de raccourci existe déjà avec les mêmes paramètres $hWnd et $iID, elle est maintenu an même temps que la nouvelle touche de raccourci. Dans ces versions de Windows, l'application doit appeler explicitement _WinAPI_UnregisterHotKey() pour annuler l'inscription de l'ancienne touche de raccourci.
Consultez RegisterHotKey dans la librairie MSDN.
#include <APISysConstants.au3> #include <MsgBoxConstants.au3> #include <WinAPIConv.au3> #include <WinAPISys.au3> #include <WindowsConstants.au3> Opt('TrayAutoPause', 0) OnAutoItExitRegister('OnAutoItExit') Local $hWnd = GUICreate('Test '& StringReplace(@ScriptName, '.au3', '()')) GUIRegisterMsg($WM_HOTKEY, 'WM_HOTKEY') ; Définit ALT- D _WinAPI_RegisterHotKey($hWnd, 0x0144, $MOD_ALT, 0x44) ; Définit ESC _WinAPI_RegisterHotKey($hWnd, 0x011B, 0, 0x1B) Global $bEsc = False While not $bEsc Sleep(1000) WEnd Func WM_HOTKEY($hWnd, $iMsg, $wParam, $lParam) #forceref $hWnd, $iMsg, $wParam Switch _WinAPI_HiWord($lParam) Case 0x44 MsgBox($MB_SYSTEMMODAL, '', 'Vous avez pressé ALT-D') Case 0x1B MsgBox($MB_SYSTEMMODAL, '', 'Vous avez pressé ESC') $bEsc = True EndSwitch EndFunc ;==>WM_HOTKEY Func OnAutoItExit() _WinAPI_UnregisterHotKey($hWnd, 0x0144) _WinAPI_UnregisterHotKey($hWnd, 0x011B) EndFunc ;==>OnAutoItExit