Problème avec Call keybd_event [Résolu]

Messages postés
100
Date d'inscription
mardi 8 mai 2007
Dernière intervention
18 février 2011
- - Dernière réponse : Le grand Jisay
Messages postés
100
Date d'inscription
mardi 8 mai 2007
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
3
Merci
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

Merci mortalino 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de mortalino
Messages postés
6812
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
21 décembre 2011
0
Merci
Salut,

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

@++

<hr size ="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Commenter la réponse de mortalino
Messages postés
22
Date d'inscription
mercredi 30 mai 2007
Dernière intervention
24 janvier 2008
0
Merci
Slt,

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

- Fyerrblad -
Commenter la réponse de cs_Fyerrblad
Messages postés
100
Date d'inscription
mardi 8 mai 2007
Dernière intervention
18 février 2011
0
Merci
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
Commenter la réponse de Le grand Jisay
Messages postés
100
Date d'inscription
mardi 8 mai 2007
Dernière intervention
18 février 2011
0
Merci
Merci a toi mortalino ca fonctionne niquel ;)
Commenter la réponse de Le grand Jisay

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.