Page 1 sur 1

Hotkeyset

Posté : jeu. 22 nov. 2018 18:46
par Misa10
Bonjour je voulais tester simplement une Hotkeyset et ça marche pas 45min que je cherche d'ou ça viens je m'en remet a vous .

Code : Tout sélectionner

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit

HotKeySet("d", "ShowMessage")  


 EndSwitch
WEnd


Func ShowMessage()
    MsgBox($MB_SYSTEMMODAL, "", "Ceci est un message.")
EndFunc   ;==>ShowMessage

alors qu'avec ce code

Code : Tout sélectionner

#include <MsgBoxConstants.au3>


While 1

  Sleep(100)

HotKeySet("d", "ShowMessage")



WEnd


Func ShowMessage()
    MsgBox($MB_SYSTEMMODAL, "", "Ceci est un message.")
EndFunc   ;==>ShowMessage
ça marche niquel . En plus j'avais déja use cette fonction dans un projet avec un GUI et tout mais la j'arrive pas a faire fonctioné je comprends pas où est mon erreur.

Re: Hotkeyset

Posté : ven. 23 nov. 2018 13:13
par walkson
Bonjour,
Dans le premier cas vous sortez du code puis vous faites un appel à la surveillance d'une touche, normal que cela ne fonctionne pas !
Dans le deuxième vous mettez cette surveillance dans une boucle, ce qui est inutile :wink:
Regardez les exemples à cette adresse https://www.autoitscript.fr/autoit3/doc ... KeySet.htm

Re: Hotkeyset

Posté : ven. 23 nov. 2018 13:57
par mikell
:mrgreen:

  Case $GUI_EVENT_CLOSE
      Exit
      HotKeySet("d", "ShowMessage")  
Image

Re: Hotkeyset  

Posté : ven. 23 nov. 2018 14:26
par Misa10
C'est bon je viens de trouvé sans vos réponses en faites mais merci quand même . Pour ceux qui tomberont sur mon post .

Faites :

Code : Tout sélectionner

Case "g"
HotKeySet("g","Showmessage")
Il faut ajouter case avec la touche . Si il y'a que hotKeyset tout seul ça marchera pas.

Re: Hotkeyset

Posté : ven. 23 nov. 2018 15:11
par walkson
Misa10 a écrit : ven. 23 nov. 2018 14:26 C'est bon je viens de trouvé sans vos réponses en faites mais merci quand même . Pour ceux qui tomberont sur mon post .
Rhôôôôô !!!!! :shock:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
HotKeySet("d", "ShowMessage")
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 615, 437, 192, 124)

GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
  Case $GUI_EVENT_CLOSE
   Exit
 EndSwitch
WEnd


Func ShowMessage()
    MsgBox($MB_SYSTEMMODAL, "", "Ceci est un message.")
EndFunc   ;==>ShowMessage
Pour la petite histoire, pourquoi votre code fonctionne:
Case "Ce machin marche aussi !"
HotKeySet("g","Showmessage")
Pourquoi ? Parce que le programme ne peut lire $nMsg = GUIGetMsg() et par conséquence $nMsg = 0 et que HotKeySet("g","Showmessage") est lancé !
$nMsg = GUIGetMsg() correspond à un Id, c'est à dire à un contrôle. Si $nMsg = 0, c'est que aucun contrôle n'a été sélectionné. A titre d'exemple, $GUI_EVENT_CLOSE = -3, c'est toujours un chiffre mais ne peut être une lettre comme votre proposition !!!
et donc Case "g" = 0 jusqu' à preuve du contraire :mrgreen:
On peut écrire du code plein d'erreurs et fonctionner, la preuve ! Mais lire l'aide et les exemples n'est pas inutile :D