Problème avec Call keybd_event [Résolu]

Le grand Jisay 100 Messages postés mardi 8 mai 2007Date d'inscription 18 février 2011 Dernière intervention - 2 juin 2007 à 15:08 - Dernière réponse : Le grand Jisay 100 Messages postés mardi 8 mai 2007Date d'inscription 18 février 2011 Dernière intervention
- 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
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 2 juin 2007 à 17:38
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

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

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 - 2 juin 2007 à 15:54
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
cs_Fyerrblad 22 Messages postés mercredi 30 mai 2007Date d'inscription 24 janvier 2008 Dernière intervention - 2 juin 2007 à 15:54
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
Le grand Jisay 100 Messages postés mardi 8 mai 2007Date d'inscription 18 février 2011 Dernière intervention - 2 juin 2007 à 17:27
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
Le grand Jisay 100 Messages postés mardi 8 mai 2007Date d'inscription 18 février 2011 Dernière intervention - 2 juin 2007 à 17:43
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.