tomatokatchup
Messages postés20Date d'inscriptionjeudi 5 juin 2003StatutMembreDernière intervention 7 décembre 2004
-
6 nov. 2004 à 16:15
tomatokatchup
Messages postés20Date d'inscriptionjeudi 5 juin 2003StatutMembreDerniè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...
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 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).
tomatokatchup
Messages postés20Date d'inscriptionjeudi 5 juin 2003StatutMembreDerniè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é. :/