GetAsyncKeyState_

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

GetAsyncKeyState_

Message par Kwai chang caine »

Bonjour à tous

GetAsyncKeyState_ ça s'utilise sans le cuisiner ??
Parce que j'ai la sensation qu'il garde en "memoire" quelque chose ??? :roll:

Ou bien que y'a deux parametres qui se suivent, car quand j'en met deux de suite ça marche et un seul, il fait comme si je continuais a appuyer, .......le gougnafier (Tiens ça rime) 8O

Peut etre faut il vider le buffer, ou un truc comme ça, avant de l'utiliser ??? :roll:

J'y pense aussi je fais deux teste de suite comme ça, ç'est peut etre la qu'est l'os, hélas ?? :roll:

Code : Tout sélectionner

If GetAsyncKeyState_(#VK_LBUTTON)
   If GetAsyncKeyState_(#VK_CONTROL)
++++
++++
+++
Endif
Endif
Merci de vos lumieres :wink:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: GetAsyncKeyState_

Message par Cls »

Salut KCC,

en fait GetAsyncKeyState renvoi l'état de la touche au moment de l'appel à la fonction. Si deux appels à cette fonction sont trop "proches" dans le temps, ils renverront la même valeur. Y'en plus d'infos ici : http://msdn.microsoft.com/en-us/library ... 85%29.aspx Normalement pas besoin "de le cuisiner" ;)

Il peut être utile de "temporiser" les appels en fonction de ce que tu souhaites faire.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: GetAsyncKeyState_

Message par Kwai chang caine »

Bonjour CLS content de te parler 8)

C'est peut etre ça...il sont trop pret, car ils sont juste a la suite l'un de l'autre :roll:

Car comme ça ...ça marche pas

Code : Tout sélectionner

If GetAsyncKeyState_(#VK_LBUTTON)
   If GetAsyncKeyState_(#VK_CONTROL)
++++
++++
+++
Endif
Endif
Et comme ça ...avec un debug, ça marche 8O

Code : Tout sélectionner

If GetAsyncKeyState_(#VK_LBUTTON)
 Debug GetAsyncKeyState_(#VK_CONTROL)
   If GetAsyncKeyState_(#VK_CONTROL)
++++
++++
+++
Endif
Endif
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: GetAsyncKeyState_

Message par Cls »

Si je comprends bien tu veux intercepter le Ctrl + click gauche. Tu peux faire ainsi :

Code : Tout sélectionner

#APPUI = -32767
#APPUI_LONG = 32768

Repeat

  click_gauche = GetAsyncKeyState_(#VK_LBUTTON)
  control = GetAsyncKeyState_(#VK_CONTROL)
  
  If click_gauche = #APPUI And (control = #APPUI Or control = #APPUI_LONG)
    Debug "Ctrl + click gauche"
    End
  EndIf
  
  Delay(10)
ForEver
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: GetAsyncKeyState_

Message par Kwai chang caine »

C'est un tout petit peu plus compliqué que ça.
Je veux detecter le clic gauche et aussi le clic gauche + CTRL

J'ai modifié ton code
Avec un ElseIf, et seulement dans cet ordre, ça a l'air de marcher :roll:

Code : Tout sélectionner

#APPUI = -32767
#APPUI_LONG = 32768

Repeat

  click_gauche = GetAsyncKeyState_(#VK_LBUTTON)
  control = GetAsyncKeyState_(#VK_CONTROL)
    
  If click_gauche = #APPUI And (control = #APPUI Or control = #APPUI_LONG)
    Debug "Ctrl + click gauche"
  ElseIf click_gauche = #APPUI 
    Debug "Click gauche seul"
  EndIf
  
  Delay(10)
ForEver²
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: GetAsyncKeyState_

Message par Kwai chang caine »

Bon je viens de trouver une combine sur le US de dare, pour vider le tampon clavier
Bien qu'ils disent que cela ne s'appelle pas comme ça..enfin si j'ai compris :roll:
http://www.purebasic.fr/english/viewtop ... 67#p231767

Code : Tout sélectionner

ClearBuffer = AllocateMemory(256)
     
     If ClearBuffer
      SetKeyboardState_(ClearBuffer)
      FreeMemory(ClearBuffer)
     EndIf 
     
     
Je l'ai rajouté entre les deux comme ça et ça a l'air de marcher :roll:

Code : Tout sélectionner

If GetAsyncKeyState_(#VK_LBUTTON)

     ClearBuffer = AllocateMemory(256)
     
     If ClearBuffer
      SetKeyboardState_(ClearBuffer)
      FreeMemory(ClearBuffer)
     EndIf 
          
 If GetAsyncKeyState_(#VK_CONTROL)
Parce que j'ai essayé de modifier ma condition comme tu viens de me donner, mais vu que c'est tout imbriqué, j'arrive pas a m'en sortir :oops:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre