Problème avec Call keybd_event

Résolu
Le grand Jisay Messages postés 100 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 18 février 2011 - 2 juin 2007 à 15:08
Le grand Jisay Messages postés 100 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 18 février 2011 - 2 juin 2007 à 17:43
Bonjour a tous, je suis étudiant en informatique et débutant en vb.net (ca ne fait meme pas 6mois que j'en fais) et j'ai un problème lorsque je veux simuler l'appui sur une touche du clavier... J'ai trouveé un code mais j'ai toujours une erreur et je ne sais pas quoi faire...

J'ai un API qui est le suivant :
     Private Declare Sub keybd_event Lib "user32" (ByVal hbkey As Byte, ByVal hbscan As Byte, ByVal hbFlags As Long, ByVal hbxtrainfo As Long)

Jusque la tout va bien mais quand j'ajoute la ligne suivante :
    Call keybd_event(vbKeySnapshot, 1, 0, 0)

J'ai une erreur :
    Le nom 'vbKeySnapshot' n'est pas déclaré.

Pouvez-vous m'aider a résoudre ce problème... Si ce code n'est pas pour du .net, serait-il possible d'avoir un code pour simuler un appui sur une touche ?

D'avance merci,
Le Grand Jisay

5 réponses

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
2 juin 2007 à 17:38
Oui et non (pour VB 2005)
Change 2 choses :
Dim KeySnapShot As Byte = &H2C

et tes Long (dans la déclaration de l'API), changent les en Integer

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
2 juin 2007 à 15:54
Salut,

KeySnapshot = 2C (hexa) donc 44 en Long.

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
0
cs_Fyerrblad Messages postés 22 Date d'inscription mercredi 30 mai 2007 Statut Membre Dernière intervention 24 janvier 2008
2 juin 2007 à 15:54
Slt,

je crois qu'il faut que tu mettes au début:
Dim *** as ***. Je suis pas sûr mais essaies.

- Fyerrblad -
0
Le grand Jisay Messages postés 100 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 18 février 2011 2
2 juin 2007 à 17:27
Re,
Effectivement mortalino, 44 est bien associé au snapshot. Quand je fais :

Public

Class Form1

Private
Declare
Sub keybd_event
Lib
"user32" (
ByVal hbkey
As
Byte,
ByVal hbscan
As
Byte,
ByVal hbFlags
As
Long,
ByVal hbxtrainfo
As
Long)

Dim KeySnapShot 
As
Long = 44

Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load

         Call keybd_event(KeySnapshot, 1, 0, 0)

End
Sub

Il n'y a plus d'erreur avant exécution mais quand j'exécute, il y un autre petit problème qui survient... Voici ce qu'il est dit :

'Un appel à la fonction PInvoke 'WindowsApplication2!WindowsApplication2.Form1::keybd_event' a déséquilibré la pile. Cela peut se produire, car la signature PInvoke managée ne correspond pas à la signature cible non managée. Vérifiez que la convention d'appel et les paramètres de la signature PInvoke correspondent à la signature non managée cible.'

En fait quand j'appele avec le Call keybd_event le premier paramètre (qui pose problème => KeySnapshot) est de type Byte

Petite précision : je travaille avec Microsoft Visual Studio 2005, je ne sais pas si le problème peut venir de là...

Encore merci d'avance

A bientot, Le Grand Jisay
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le grand Jisay Messages postés 100 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 18 février 2011 2
2 juin 2007 à 17:43
Merci a toi mortalino ca fonctionne niquel ;)
0