Buffer du clavier [Résolu]

madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 3 sept. 2006 à 23:09 - Dernière réponse : madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention
- 4 sept. 2006 à 01:00
Je fais un petit test d'application et j'aimerai récupérer le buffer du clavier. Par exemple l'utilisateur clique sur a et b en meme temps j'aimerai etre au courant. Parceque les arguments de base ne peuvent renvoyer que a ou b (les keypress par exemple). Merci si vous trouvez la solution, je cherche depuis 1h je n'en peux plus...
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 4 sept. 2006 à 00:57
3
Merci
Bonsoir tout le monde.



Donc, en dotnet, la déclaration d'api change.
De plus si la doc de l'api (http://docvb.free.fr/apidetail.php?idapi=160) indique qu'il renvoie -127 ou -128 si la touche est enfoncé.



Donc si on remet tout en ordre, ca donne :






Private

Declare

Function
GetKeyState
Lib

"user32"
(
ByVal
nVirtKey
As
Int32)
As

Integer

Private

Sub
Timer1_Tick(
ByVal
sender
As
System.Object,
ByVal
e
As
System.EventArgs)
Handles
Timer1.Tick

  
If
GetKeyState(System.Windows.Forms.Keys.F9) < 0
Then
Label1.Text =
"La touche F9 a été pressé"
& vbNewLine &
"Qu'y a t-il de compliqué à cela ??"

End

Sub




Voili, voilou

Kenji

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Charles Racaud
PCPT 13368 Messages postés lundi 13 décembre 2004Date d'inscription 3 février 2018 Dernière intervention - 3 sept. 2006 à 23:17
0
Merci
salut,
API GetKeyState par exemple. aucun rapport avec un buffer quelconque...
recherches sans succès? bizarre çà....
normalement çà devrait être bon là ;)

++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Commenter la réponse de PCPT
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 3 sept. 2006 à 23:26
0
Merci
Mince c'est encore du COM. Ils n'ont donc rien fait en .NET là dessus? Je vais devoir utiliser l'API mais bon j'ai l'impression de faire du VB6 :(
Commenter la réponse de madflo
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 3 sept. 2006 à 23:42
0
Merci
Le code :
Public Class Form1
    Declare Function GetKeyState Lib "user32" ( _
                     ByVal nVirtKey As Long) As Integer
    Const test = 1
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim mytest As Long
        mytest = CLng(Asc("z"))
        Label1.Text = Str(GetKeyState(mytest))

    End Sub
End Class

L'erreur :
A call to PInvoke function 'WindowsApplication1!WindowsApplication1.Form1::GetKeyState' has unbalanced the stack. This is likely because the managed PInvoke signature does not match the unmanaged target signature. Check that the calling convention and parameters of the PInvoke signature match the target unmanaged signature.

Je ne comprend pas... :'(
Commenter la réponse de madflo
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 sept. 2006 à 00:12
0
Merci


Salut,avec cette fonction d'API, pas de transformation en ASCII !Il faut utiliser les constantes : (je vais finir par les copier dans une page html) ConstanteValeurDéfinitionVK_F978Touche f9VK_F877Touche f8VK_F675Touche f6VK_F776Touche f7VK_F574Touche f5VK_F473Touche f4VK_F372Touche f3VK_F271Touche f2VK_F170Touche f1VK_DIVIDE6FTouche "division".VK_DECIMAL6ETouche séparateur décimal.VK_SUBTRACT6DTouche "soustraction".VK_SEPARATOR6CTouche de séparation.VK_ADD6BTouche "addition".VK_MULTIPLY6ATouche "multiplication".VK_NUMPAD969Touche 9 (clavier numérique).VK_NUMPAD868Touche 8 (clavier numérique).VK_NUMPAD767Touche 7 (clavier numérique).VK_NUMPAD666Touche 6 (clavier numérique).VK_NUMPAD565Touche 5 (clavier numérique).VK_NUMPAD464Touche 4 (clavier numérique).VK_NUMPAD363Touche 3 (clavier numérique).VK_NUMPAD262Touche 2 (clavier numérique).VK_NUMPAD161Touche 1 (clavier numérique).VK_NUMPAD060Touche 0 (clavier numérique).VK_APPS5DTouche Windows applications (Microsoft Natural Keyboard).VK_RWIN5CTouche Windows droite (Microsoft Natural Keyboard).VK_LWIN5BTouche Windows gauche (Microsoft Natural Keyboard).VK_Z5ATouche zVK_Y59Touche yVK_X58Touche xVK_W57Touche wVK_V56Touche vVK_U55Touche uVK_T54Touche tVK_S53Touche sVK_R52Touche rVK_Q51Touche qVK_P50Touche pVK_O4FTouche oVK_N4ETouche nVK_M4DTouche mVK_L4CTouche lVK_K4BTouche kVK_J4ATouche jVK_I49Touche iVK_H48Touche hVK_G47Touche gVK_F46Touche fVK_E45Touche eVK_D44Touche dVK_C43Touche cVK_B42Touche bVK_A41Touche aVK_939Touche 9VK_838Touche 8VK_737Touche 7VK_535Touche 5VK_636Touche 6VK_333Touche 3VK_434Touche 4VK_131Touche 1VK_232Touche 2VK_030Touche 0VK_HELP2FTouche "aide".VK_DELETE2ETouche "Suppression".VK_INSERT2DTouche insertion.VK_SNAPSHOT2CTouche impression écran.VK_EXECUTE2BTouche "exécution".VK_SELECT29Touche "selection".VK_DOWN28Flèche curseur bas.VK_RIGHT27Flèche curseur droit.VK_UP26Flèche curseur haut.VK_LEFT25Flèche curseur gauche.VK_HOME24Touche "début".VK_END23Touche "fin".VK_NEXT22Touche "page bas".VK_PRIOR21Touche "page haut".VK_SPACE20Touche Espace.VK_ESCAPE1BTouche Echap.VK_CAPITAL14Touche verrouillage majuscule.VK_PAUSE13Touche "Pause".VK_MENU12Touche "Alt".VK_CONTROL11Touche "Control".VK_SHIFT10Touche "Shift".VK_RETURN0DTouche "Entrée".VK_CLEAR0CTouche d'effacement.VK_TAB09Touche tabulation.VK_BACK08Touche retour arrière.VK_MBUTTON04Bouton du milieu de la souris (le 3ème boutton).VK_CANCEL03Control-break.VK_RBUTTON02Bouton droit de la souris.VK_LBUTTON01Bouton gauche de la souris.VK_F1079Touche f10VK_F117ATouche f11VK_F127BTouche f12VK_F137CTouche f13VK_F147DTouche f14VK_F157ETouche f15VK_F167FTouche f16VK_F1780HTouche f17VK_F1881HTouche f18VK_F1982HTouche f19VK_F2083HTouche f20VK_F2184HTouche f21VK_F2285HTouche f22VK_F2386HTouche f23VK_F2487HTouche f24VK_NUMLOCK90Touche verrouillage numérique.VK_SCROLL91Touche verrouillage défilement.VK_ATTNF6Touche "Attn".VK_CRSELF7Touche "CrSel".VK_EXSELF8Touche "ExSel".VK_PLAYFATouche "Play".VK_ZOOMFBTouche "Zoom".VK_NONAMEFCReservé.VK_PA1FDTouche PA1.@++   --Mortalino--Le mystérieux chevalier, "Provençal, le Gaulois"
Commenter la réponse de mortalino
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 4 sept. 2006 à 00:23
0
Merci
Public Class Form1
    Declare Function GetKeyState Lib "user32" ( _
                     ByVal nVirtKey As Long) As Integer
    Const test = 1
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim mytest As Long
        Label1.Text = GetKeyState(58)
    End Sub
End Class

Je suis en VB.net, je ne vois pas ce que vous demandez que je rajoute... Le type long est attendu donc conversion de l'hexadecimal des constantes ca donne toujours la meme erreur. Si on envoie 1, c'est sensé être un bouton de la sourie selon une source de quelqu'un d'autre. Rien ne fonctionne... :'(
Commenter la réponse de madflo
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 4 sept. 2006 à 00:32
0
Merci
Faudrait remettre les choses en place dans ton esprit.
API n'est pas du COM, c'est l'appel direct des fonctions qu'expose le système.
Le framework .NET par contre est bien un serveur COM, c'est d'ailleurs lui qui transmet les appels API sans lesquels il ne se passerait rien.

ciao...
BruNews, MVP VC++
Commenter la réponse de BruNews
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 4 sept. 2006 à 00:33
0
Merci
Oui ne t'inquiete pas j'ai regretté mon post, mais en ce qui concerne mon problème, l'erreur est toujours là.
Commenter la réponse de madflo
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 sept. 2006 à 00:40
0
Merci
Exemple :

Declare Function GetKeyState Lib "user32" ( _
                     ByVal nVirtKey As Long) As Integer

Const VK_F9 As Long = 78

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As                 System.EventArgs) Handles Timer1.Tick

         If GetKeyState(58) Then Label1.Text = "La touche F9 a été pressé" & vbCrLf & _
                                                                "Qu'y a t-il de compliqué à cela ??"
    End Sub

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 sept. 2006 à 00:41
0
Merci
Arf, j'ai réecrit ta bétise :

Il ne faut pas lire If GetKeyState(58) mais If GetKeyState(VK_F9)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 4 sept. 2006 à 00:43
0
Merci
Non je t'assure que ca me fait un bug, toujours le même d'ailleur. Même en faisant ce que tu viens de me mettre (j'ai utilisé l'aide sur http://docvb.free.fr/apidetail.php?idapi=160)

A call to PInvoke function
'WindowsApplication1!WindowsApplication1.Form1::GetKeyState' has
unbalanced the stack. This is likely because the managed PInvoke
signature does not match the unmanaged target signature. Check that the
calling convention and parameters of the PInvoke signature match the
target unmanaged signature.

Je ne suis pas nul à ce point...
Commenter la réponse de madflo
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 4 sept. 2006 à 00:44
0
Merci
Non vraiment... Toujours la même erreur...
Commenter la réponse de madflo
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 4 sept. 2006 à 00:46
0
Merci
Désolé mais je ne peux t"aider plus, je ne suis pas encore en dotnet, mais vb6 : ce message d"erreur je ne le connais pas.

Bon courage

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 4 sept. 2006 à 00:49
0
Merci
Je vais devenir fou, merci de l'aide je vais quand même rester vérifier que personne ne réussisse à comprendre l'erreur.
Commenter la réponse de madflo
madflo 47 Messages postés mercredi 28 juillet 2004Date d'inscription 24 juin 2013 Dernière intervention - 4 sept. 2006 à 01:00
0
Merci
Merci, tout va bien à présent.
Commenter la réponse de madflo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.