[R] Mettre une hotkey

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

[R] Mettre une hotkey

#1

Message par lesolutionneur »

Salut tout le monde, j'aimerais définir une hotkey :
J'ai donc essayé hotkeyset :

Code : Tout sélectionner

HotKeySet("{DEL}", "deletefiles")
Le problème est que du coup, partout, même dans d'autres fenêtres, le bouton del était monopolisé par mon application et de plus, sans être sur ma gui, en cliquant sur del, on pouvait supprimer des trucs sans s'en rendre compte...

J'aimerais donc savoir s'il était possible de définir un hotkey mais en fournissant le handle ou autre de la gui de façon à ce qu'il n'agisse que si la gui est active.

J'ai vu la solution

Code : Tout sélectionner

; Define two dummy Controls in your GUI
$ButtonStrgA = GUICtrlCreateDummy()
$ButtonStrgC = GUICtrlCreateDummy()
...
; Set accelerator keys for Strg+a and Strg+c
Global $asAccelKeys[2][2] = [["^a", $ButtonStrgA],["^c", $ButtonStrgC]]
GUISetAccelerators($asAccelKeys)
...
While 1
    $nMsg = GUIGetMsg(1)
    Select
        Case $nMsg[0] = $GUI_EVENT_CLOSE
            Exit
        Case $nMsg[0] = $ButtonStrgA
            _SelectAll()
        Case $nMsg[0] = $ButtonStrgC
            _Clipboard()
    EndSelect
WEnd
Mais elle n'est pas applicable à mon logiciel.

Il y a également

Code : Tout sélectionner

#Include <HotKey.au3>

Global Const $VK_OEM_PLUS = 0xBB
Global Const $VK_OEM_MINUS = 0xBD

Global $Form, $Label
Global $i = 0

$Form = GUICreate('MyGUI', 200, 200)
$Label = GUICtrlCreateLabel($i, 20, 72, 160, 52, 0x01)
GUICtrlSetFont(-1, 32, 400, 0, 'Tahoma')
GUISetState()

; Assign "CTRL-(+)" with MyFunc1() and "CTRL-(-)" with MyFunc2() for created window only
_HotKeyAssign(BitOR($CK_CONTROL, $VK_OEM_PLUS), 'MyFunc1', 0, $Form)
_HotKeyAssign(BitOR($CK_CONTROL, $VK_OEM_MINUS), 'MyFunc2', 0, $Form)

Do
Until GUIGetMsg() = -3

Func MyFunc1()
    $i += 1
    GUICtrlSetData($Label, $i)
EndFunc   ;==>MyFunc1

Func MyFunc2()
    $i -= 1
    GUICtrlSetData($Label, $i)
EndFunc   ;==>MyFunc2
Mais je ne connais pas les équivalents de "$VK_OEM_MINUS" pour la touche del (ou "suppr")

Merci de m'éclairer, le dernier code m'a l'air applicable sur ma gui
Modifié en dernier par lesolutionneur le dim. 22 janv. 2012 15:24, modifié 1 fois.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] mettre une hotkey

#2

Message par matwachich »

Pourquoi le code avec les Accelerators n'est-t-il pas applicable??? C'est pourtant, je pense la meilleur alternative.
Sinon, pour les VK (VirtualKeys), voila
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] mettre une hotkey

#3

Message par lesolutionneur »

Ok, merci !

Ps: en quoi les accélérateurs seraient-ils plus appropriés ?
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] mettre une hotkey

#4

Message par matwachich »

- Plus simple
- Ne concernent que la GUI
- Pas besoin d'include supplémentaire
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Mettre une hotkey

#5

Message par lesolutionneur »

Ok, merci, mais les hotkey avec l'include, n'agissent-ils pas seulement si la fenêtre est active ?
Si non, alors vous avez-raison, les accélérateurs sont plus adaptés !
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Mettre une hotkey

#6

Message par matwachich »

Franchement, je ne connais pas cet include, alors je ne sais pas comment il fonctionne.
Perso, quand je veux un HotKey qui ne fonctionne que sur la GUI, je n'y vais pas par 36 chemins: Dummy + Accelerators
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
lesolutionneur
Niveau 7
Niveau 7
Messages : 368
Enregistré le : ven. 09 déc. 2011 11:25
Status : Hors ligne

Re: [..] Mettre une hotkey

#7

Message par lesolutionneur »

Le sujet est réolu : la deuxième méthode marchait parfaitement comme ceci :

Code : Tout sélectionner

$ButtonStrgA = GUICtrlCreateDummy()
Global $asAccelKeys[1][2] = [["^a", $ButtonStrgA]]
GUISetAccelerators($asAccelKeys)
While 1
    $nMsg = GUIGetMsg()
    Switch
        Case $nMsg = $GUI_EVENT_CLOSE
            Exit
        Case $nMsg = $ButtonStrgA
            MsgBox(0,"informations", "CTRL + a a été pressé")
    EndSwitch
WEnd
 
Répondre