Page 3 sur 3

Re: detecteur d'appui clavier

Publié : ven. 25/mars/2011 14:49
par dayvid
Salut Dsoumaka :)
A ton service camarade :wink:
Merci beaucoup :wink:

Regarde ce que j'ai réussie a faire
il faut dire que c'étais un très bon exemple :D

Cependant tu conviendras que il n’est pas encore bien au point
par exemple quand tu appuie sur les touches Ctrl gauche, Alt, Alt Gr, Ctrl droite
et bien il renvoie plusieurs touche 8O

Bien, donc je m'en suis inspiré enfin oui et non
pour mon programme de détection de clique souris et d'appuie clavier

Mais je t'avoue que j'ai mis un bout de temps car j'ai du ruser pour qu'il ne me renvoie qu'une seule touche à la fois

Bien cella étant dit, cella fonctionne plutôt pas mal sauf que dans le dernier exemple du code

Quand tu mets les deux fonctions en même temps dans une boucle
sa ne marche pas toujours du premier coup

Code : Tout sélectionner

; programme réaliser par monsieur dieppedalle david le 24 mars 2011


;-----------------------------------------------------------Pour le clavier:---------------------------------------------------------------------------------------------------------

; Le Mode peut être entre 1 et 5, sinon si différent de 1, 2, 3, 4 ou 5,  le mode 1 sera appliquer par défaut
;
; 1 = Renvoie uniquement le nom de la touche presser (Mode par défaut)
; 2 = Renvoie le nom ainsi que le code de la touche presser
; 3 = Renvoie le nom ainsi que le code de la touche presser sous la forme Hexa
; 4 = Renvoie uniquement le code de la touche presser
; 5 = Renvoie uniquement le code de la touche presser mais sous la forme Hexa

; Syntaxe:  Touche_presser$ = GetKeyboardKeyPressed(Mode)

; La commande doit être placer a l'intérieur d'une boucle quelconque pour fonctionner correctement
; ou sinon celle-ci sera exécuter qu'une seule fois et ne renverra rien sauf si une touche est déjà enfoncer

; Normalement, toutes les touches du clavier son gérer !

;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



;---------------------------------------------------------------Pour la souris:-----------------------------------------------------------------------------------------------------
; Le Mode peut être entre 1 et 5, sinon si différent de 1, 2, 3, 4 ou 5,  le mode 1 sera appliquer par défaut
;
; 1 = Renvoie uniquement le nom du clique presser (Mode par défaut)
; 2 = Renvoie le nom ainsi que le code du clique presser
; 3 = Renvoie le nom ainsi que le code du clique presser sous la forme Hexa
; 4 = Renvoie uniquement le code du clique presser
; 5 = Renvoie uniquement le code du clique presser mais sous la forme Hexa

; Syntaxe:  Clique_Souris$ = GetMouseKeyPressed(Mode)

; La commande doit être placer a l'intérieur d'une boucle quelconque pour fonctionner correctement
; ou sinon celle-ci sera exécuter qu'une seule fois et ne renverra rien sauf si un clique est déjà enfoncer

; Normalement, la plupart des cliques de la souris son gérer, mais pas tous !
;---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Procedure.s GetKeyboardKeyPressed(Mode)
    
    Buffer$ = ""
    
    For Touche = 0 To 254
      Cle_Touche = GetAsyncKeyState_(Touche)
      
      If Cle_Touche = - 32767
        
        Buffer$ + Str(Touche) + "|"
        
        
        If Touche > 64 And Touche < 91 ; de A à Z
          Touche$ = Chr(Touche)
          
          
        ElseIf Touche = 27
          Touche$ = "Echap"
          
          
        ElseIf Touche = 32
          Touche$ = "Espace"
          
          
        ElseIf Touche > 111 And Touche < 124 ; de F1 a F12
          Touche$ = "F" + Str(Touche - 111)
          
          
        ElseIf Touche = 44
          Touche$ = "Impr écran"
          
          
        ElseIf Touche = 45
          Touche$ = "Inser"
          
          
        ElseIf Touche = 46
          Touche$ = "Suppr"
          
          
        ElseIf Touche = 36
          Touche$ = "Flèche diagonnale haut gauche"
          
          
        ElseIf Touche = 35
          Touche$ = "Fin"
          
          
        ElseIf Touche = 19
          Touche$ = "Pause-Attn"
          
          
        ElseIf Touche = 145
          Touche$ = "Arrêt Défil"
          
          
        ElseIf Touche > 47 And Touche < 58 ; de 0 à 9
          Touche$ = Str(Touche - 48)
          
          
        ElseIf Touche > 95 And Touche < 106 ; pad numérique de 0 à 9
          Touche$ = "Pad " + Str(Touche - 96)
          
          
        ElseIf Touche = 222
          Touche$ = "²"
          
          
        ElseIf Touche = 219
          Touche$ = ")"
          
          
        ElseIf Touche = 187
          Touche$ = "="
          
          
        ElseIf Touche = 8
          Touche$ = "Retour arrière"
          
          
        ElseIf Touche = 9
          Touche$ = "Tabulation Horizontal"
          
          
        ElseIf Touche = 20
          Touche$ = "Majuscule Cadena"
          
          
        ElseIf Touche = 160
          Touche$ = "Majuscule flèche gauche"
          
          
        ElseIf Touche = 162
          Touche$ = "Ctrl gauche"
          
        ElseIf Touche = 91
          Touche$ = "Appel du menue de windows"
          
          
        ElseIf Touche = 93
          Touche$ = "Appel du menue de la souris"
          
          
        ElseIf Touche = 164
          Touche$ = "Alt"
          
          
        ElseIf Touche = 226
          Touche$ = ">"
          
          
        ElseIf Touche = 221
          Touche$ = "¨"
          
          
        ElseIf Touche = 186
          Touche$ = "$"
          
          
        ElseIf Touche = 192
          Touche$ = "ù"
          
          
        ElseIf Touche = 220
          Touche$ = "*"
          
          
        ElseIf Touche = 188
          Touche$ = ","
          
          
        ElseIf Touche = 190
          Touche$ = ";"
          
          
        ElseIf Touche = 191
          Touche$ = ":"
          
          
        ElseIf Touche = 223
          Touche$ = "!"
          
          
        ElseIf Touche = 161
          Touche$ = "Majuscule flèche droite"
          
          
        ElseIf Touche = 33
          Touche$ = "Flèche arrètte haut"
          
          
        ElseIf Touche = 34
          Touche$ = "Flèche arrètte bas"
          
          
        ElseIf Touche = 163
          Touche$ = "Ctrl droite"
          
          
        ElseIf Touche = 165
          Touche$ = "Alt Gr"
          
        ElseIf Touche = 37
          Touche$ = "Flèche gauche"
          
        ElseIf Touche = 38
          Touche$ = "Flèche haut"
          
        ElseIf Touche = 39
          Touche$ = "Flèche droite"
          
        ElseIf Touche = 40
          Touche$ = "Flèche bas"
          
        ElseIf Touche = 110
          Touche$ = "Pad Suppr"
          
        ElseIf Touche = 13
          Touche$ = "Entrer"
          
        ElseIf Touche = 106
          Touche$ = "Pad Multiplication"
          
        ElseIf Touche = 107
          Touche$ = "Pad Addition"
          
        ElseIf Touche = 109
          Touche$ = "Pad soustraction"
          
        ElseIf Touche = 111
          Touche$ = "Pad Division"
          
        ElseIf Touche = 144
          Touche$ = "Verr num"
          
        ElseIf Touche = 172
          Touche$ = "Internet"
          
        ElseIf Touche = 180
          Touche$ = "Mail"
          
        ElseIf Touche = 174
          
          
          Touche$ = "Sons -"
          
        ElseIf Touche = 175
          Touche$ = "Sons +"
          
        ElseIf Touche = 177
          Touche$ = "Lecture reculer"
          
        ElseIf Touche = 178
          Touche$ = "Lecture stop"
          
        ElseIf Touche = 179
          Touche$ = "Lecture / pause"
          
        ElseIf Touche = 176
          Touche$ = "Lecture avencer"
          
          
        EndIf
        
        If Touche <> 16 And Touche <> 17 And Touche <> 18 And Touche <> 1 And Touche <> 2 And Touche <> 4        
          If Buffer$ <> "17|18|162|"
            If Mode = 1
              Touche_presser$ = Touche$
            ElseIf Mode = 2
              Touche_presser$ =  Touche$ + " | " + Str(Touche)
            ElseIf Mode = 3
              Touche_presser$ =  Touche$ + " | " + "$" + RSet(Hex(Touche), 2, "0")
            ElseIf Mode = 4
              Touche_presser$ =  Str(Touche)
            ElseIf Mode = 5
              Touche_presser$ = "$" + RSet(Hex(Touche), 2, "0")
            Else
              Touche_presser$ = Touche$
            EndIf
          ElseIf Buffer$ = "17|18|162|"
            If Mode = 1
              Touche_presser$ = "Alt Gr"
            ElseIf Mode = 2
              Touche_presser$ =  "Alt Gr" + " | " + Str(165)
            ElseIf Mode = 3
              Touche_presser$ =  "Alt Gr" + " | " + "$" + RSet(Hex(165), 2, "0")
            ElseIf Mode = 4
              Touche_presser$ =  Str(165)
            ElseIf Mode = 5
              Touche_presser$ = "$" + RSet(Hex(165), 2, "0")
            Else
              Touche_presser$ = "Alt Gr"
            EndIf
          EndIf
        EndIf
        
      EndIf
      
    Next Touche
    

  ProcedureReturn Touche_presser$
EndProcedure

Procedure.s GetMouseKeyPressed(Mode)
  
  For Clique = 0 To 10
    Cle_Clique = GetAsyncKeyState_(Clique)
    
    If Cle_Clique = - 32767

      If Clique = 1
        Clique$ = "Clique droit"
        
      ElseIf Clique = 2
        Clique$ = "Clique gauche"
        
      ElseIf Clique = 4
        Clique$ = "Clique centre"
        
      ElseIf Clique = 5
        Clique$ = "Clique Précédent"
        
      ElseIf Clique = 6
        Clique$ = "Clique Suivent"
        
      EndIf
      
      If Mode = 1
        Clique_Souris$ = Clique$
        
      ElseIf Mode = 2
        Clique_Souris$ = Clique$ + " | " + Str(Clique)
        
      ElseIf Mode = 3
        Clique_Souris$ = Clique$ + " | " + "$" + RSet(Hex(Clique), 2, "0")
        
        ElseIf Mode = 4
        Clique_Souris$ = Str(Clique)
        
      ElseIf Mode = 5
        Clique_Souris$ = "$" + RSet(Hex(Clique), 2, "0")
        
      Else
        Clique_Souris$ = Clique$
      EndIf
      
    EndIf
    
  Next
  
  ProcedureReturn Clique_Souris$
EndProcedure


Repeat
  Touche_presser$ = GetKeyboardKeyPressed(1)
Until Touche_presser$ > ""

Debug Touche_presser$

; Repeat
;   Clique_Souris$ = GetMouseKeyPressed(1)
; Until Clique_Souris$ > ""
; 
; Debug Clique_Souris$


; Repeat
;   Touche_presser$ = GetKeyboardKeyPressed(1)
;   Clique_Souris$ = GetMouseKeyPressed(1)
;   Delay(1)
; Until Touche_presser$ > "" Or Clique_Souris$ > ""
; 
; Debug Touche_presser$
; Debug Clique_Souris$

Re: detecteur d'appui clavier

Publié : ven. 25/mars/2011 19:58
par Anonyme 2
il n’est pas encore bien au point
C'est vrai, c'est vrai :? ..

PS: pas "Dsoumaka", mais Dzoumaka :wink:

Re: detecteur d'appui clavier

Publié : sam. 26/mars/2011 14:25
par dayvid
Oups, j'ai failli déclancher une guerre nucléair la :mrgreen:
excuse moi Dzoumaka :)

Re: detecteur d'appui clavier

Publié : mar. 29/mars/2011 21:22
par jbernard13
Merci pour les codes :o)))

Re: detecteur d'appui clavier

Publié : ven. 01/avr./2011 13:25
par dayvid
Pas de quoi :D

Re: detecteur d'appui clavier

Publié : jeu. 12/mai/2011 11:49
par Anonyme 2
Effectivement ton prog marche à merveille, bien mieux que mon ancien prog :mrgreen:

Re: detecteur d'appui clavier

Publié : jeu. 12/mai/2011 14:37
par dayvid
Super, je suis très comptent que cellà vous plaisent :D

Re: detecteur d'appui clavier

Publié : sam. 14/mai/2011 19:41
par Anonyme 2
:D