madflo
Messages postés47Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention24 juin 2013
-
3 sept. 2006 à 23:09
madflo
Messages postés47Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention24 juin 2013
-
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...
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 ??"
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 3 sept. 2006 à 23:17
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
madflo
Messages postés47Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention24 juin 2013 3 sept. 2006 à 23:42
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... :'(
Vous n’avez pas trouvé la réponse que vous recherchez ?
madflo
Messages postés47Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention24 juin 2013 4 sept. 2006 à 00:23
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... :'(
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 4 sept. 2006 à 00:32
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.
madflo
Messages postés47Date d'inscriptionmercredi 28 juillet 2004StatutMembreDernière intervention24 juin 2013 4 sept. 2006 à 00:43
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.