UDF > WinAPIEx > System > User Keyboard Input >


_WinAPI_RegisterHotKey

Définit une touche de raccourci du système

#include <WinAPISys.au3>
_WinAPI_RegisterHotKey ( $hWnd, $iID, $iModifiers, $vKey )

Paramètres

$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_*).

Valeur de retour

Succès: Retourne True.
Échec: Retourne False, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur.

Remarques

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.

En relation

_WinAPI_UnregisterHotKey

Voir aussi

Consultez RegisterHotKey dans la librairie MSDN.

Exemple

#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