Sendinput défaillant...

tomatokatchup Messages postés 20 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 7 décembre 2004 - 6 nov. 2004 à 16:15
tomatokatchup Messages postés 20 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 7 décembre 2004 - 7 nov. 2004 à 18:56
Bonjour.

Je veut utilisé l'API sendinput pour transmettre à un autre prog (un jeu) l'appui sur la touche espace qui ouvrira un menu dans ce meme jeu.

Voici ma fonction, qui est censé simulé l'appui sur une touche :

Private Sub SendKey(bKey As Byte)
    Dim GInput(0 To 1) As GENERALINPUT
    Dim KInput As KEYBDINPUT
    
    KInput.wVk = bKey
    KInput.dwFlags = 0
    KInput.time = 0
    KInput.dwExtraInfo = 0
    
  
    GInput(0).dwType = INPUT_KEYBOARD
    CopyMemory GInput(0).xi(0), KInput, Len(KInput)
    
    KInput.wVk = bKey
    KInput.dwFlags = KEYEVENTF_KEYUP
    KInput.time = 0
    KInput.dwExtraInfo = 0
    
    GInput(1).dwType = INPUT_KEYBOARD
    CopyMemory GInput(1).xi(0), KInput, Len(KInput)
    
    SendInput 2, GInput(0), Len(GInput(0))
End Sub


Seulement voila, rien ne se passe, la touche n'est pas transmise, ce ne fait rien...
J'ai déja essayer avec un sendkeys, ou encore un keybd_event mais rien n'y fait, ca ne marche toujour pas... :(

Le prob peut il venir de l'application qui refuse le sendkey?

Bref, je vois vraiment aucune solution a mon probleme...

3 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
6 nov. 2004 à 16:38
Salut, je pense que le problème vient plutôt du fait que tu ne récupères pas le handle de l'appli et donc tu ne peux pas lui envoyer de send.
Avec le sendkeys, il faut que ton appli qui doit recevoir soit active (au premier plan quoi).

Cordialement, CanisLupus
0
tomatokatchup Messages postés 20 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 7 décembre 2004
6 nov. 2004 à 17:45
Je ne pense pas que ce soit ca, puisque quand je lance le chat du jeu, et que j'appui sur F2 (touche qui envoie le sendkeys) et bien je vois mon espace apparaitre.

Voici ma fonction timer qui attend l'appui sur une touche pour envoyer le sendkey :

Private Sub Timer1_Timer()

If Command1.Caption <> "Démarrer" Then
    For a = 0 To 256
    If GetAsyncKeyState(a) <> 0 Then
        Select Case a
            Case 113: SendKey VK_SPACE
        End Select
    End If
    Next
End If
Exit Sub

End Sub


VK_SPACE étant defini plus haut comme ceci : Const VK_SPACE = &H20

Donc je ne voit pas pourquoi l'espace apparait quand je lance le chat, et qu'il ne fait pas apparaitre le menu quand le chat est désactivé. :/
0
tomatokatchup Messages postés 20 Date d'inscription jeudi 5 juin 2003 Statut Membre Dernière intervention 7 décembre 2004
7 nov. 2004 à 18:56
Pas d'idées? :/
0
Rejoignez-nous