Problème avec Call keybd_event

Résolu
Signaler
Messages postés
100
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
18 février 2011
-
Messages postés
100
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
18 février 2011
-
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
A voir également:

5 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
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
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

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

@++

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

Slt,

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

- Fyerrblad -
Messages postés
100
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
18 février 2011
3
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
Messages postés
100
Date d'inscription
mardi 8 mai 2007
Statut
Membre
Dernière intervention
18 février 2011
3
Merci a toi mortalino ca fonctionne niquel ;)