Page 1 sur 1

[R] Mettre une hotkey

Posté : sam. 21 janv. 2012 16:55
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

Re: [..] mettre une hotkey

Posté : sam. 21 janv. 2012 17:52
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

Re: [..] mettre une hotkey

Posté : sam. 21 janv. 2012 17:57
par lesolutionneur
Ok, merci !

Ps: en quoi les accélérateurs seraient-ils plus appropriés ?

Re: [..] mettre une hotkey

Posté : sam. 21 janv. 2012 18:36
par matwachich
- Plus simple
- Ne concernent que la GUI
- Pas besoin d'include supplémentaire

Re: [..] Mettre une hotkey

Posté : sam. 21 janv. 2012 23:52
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 !

Re: [..] Mettre une hotkey

Posté : dim. 22 janv. 2012 00:40
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

Re: [..] Mettre une hotkey

Posté : dim. 22 janv. 2012 15:23
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