Sendkeys

Sendkeys - VB/VBA/VBS - Programmation

Marsh Posté le 22-05-2006 à 04:58:32    

Bonjour tout le monde,
 
J'ai un ami qui vient de faire un jeu flash pour le fun et il me l'a passé pour que je l'essaye. Malheureusement, c'est un jeu de course à pied et le but est d'appuyer sur la touche ESPACE le plus vite possible.
 
Ayant envie de lui faire un blague sans bousiller ma touche ESPACE, j'ai créé un petit programme en VBS qui simule l'appui de la touche ESPACE 100000 fois toutes les 10 millisecondes que voici:
 
Set WshShell = WScript.CreateObject("WScript.Shell" )
WScript.Sleep 5000
For i = 1 To 100000
  WshShell.SendKeys " "
  WScript.Sleep 10
Next  
 
Mais voilà le problème est que même si ce programme marche très bien, il ne fonctionne pas quand je suis dans le jeu flash. J'ai essayé de le lancer puis de lancer un bloc-note et les espaces s'affiche bien. De même après avoir lancé IE avec google, la barre de recherche se remplit d'espaces. Mais aussitôt que je suis dans le jeu flash plus rien. Pourtant le programme tourne bien car si je quitte le jeu flash les espaces sont là...
 
Des idées??? :)
 
Merci d'avance
 
Silk007

Reply

Marsh Posté le 22-05-2006 à 04:58:32   

Reply

Marsh Posté le 22-05-2006 à 13:01:09    

Salut,
Tu l'utilise mal, prends exemple:

Code :
  1. ' SendKeys.vbs
  2. ' Example VBScript Run Notepad and use SendKeys
  3. ' Author Guy Thomas http://computerperformance.co.uk/
  4. ' Ezine 26 Version 1.8 - June 2005
  5. ' -----------------------------------------------------'
  6. Option Explicit
  7. Dim objShell, Racey, intCount
  8. Set objShell = CreateObject("WScript.Shell" )
  9. objShell.Run "notepad"
  10. Wscript.Sleep 1500
  11. Racey = 1000
  12. intCount=0
  13. Do While intCount < 7
  14. objShell.SendKeys "Hello Guy"
  15. objShell.SendKeys "{TAB}"
  16. objShell.SendKeys "This is line: " & intCount
  17. objShell.SendKeys "{ENTER}"
  18. WScript.Sleep Racey
  19. intCount = intCount + 1
  20. Racey = Racey - 100
  21. Loop
  22. WScript.Quit
  23. ' End of Example SendKeys VBScript


Message édité par breizhbugs le 22-05-2006 à 13:02:04
Reply

Marsh Posté le 23-05-2006 à 01:17:53    

Salut,
 
J'ai regardé l'exemple que tu as donné et je dois admettre que je vois pas trop de différence avec ce que j'ai fait.
Le programme que j'ai proposé marche très bien tant que je suis dans un bloc note mais une fois le jeu flash lancé ca ne marche pas alors que si je retourne dans le bloc note là ça continue de tourner.
 
Par contre, j'ai trouvé un lien sur internet qui pourrait peut etre fournir l'explication :
http://www.vbfrance.com/codes/QUAN [...] _2862.aspx
 
La personne dit que parfois Sendkeys ne marche pas en particulier pour des programmes en Fortran. Je pense que j'ai le même problème. Il faut donc passé par le clipboard mais cela nécessite d'insérer une référence à "Microsoft Form 2.0 Object Library." ce que je n'arrive pas à faire.
 
Pourrais-tu m'éclairer sur mon erreur ou me dire comment dois-je insérer cette référence?
 
Merci bcp de ta réponse.
 
Silk007

Reply

Marsh Posté le 23-05-2006 à 02:56:26    

Salut,
 
Je viens de chercher encore un peu sur le net et je viens de trouver que l'on pourrait passer par l'API en utilisant keybd_event:

Code :
  1. 'Exemple d'utilisation de keybd_event
  2.  
  3. 'API
  4. Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
  5.  
  6. 'Simuler la pression sur la touche A
  7. keybd_event 65, 0, 0, 0
  8. 'Noubliez surtout pas de relacher la touche ! comme ceci :
  9. keybd_event 65, 0, 2, 0
  10. 'Pour connaitre les KeyCode il y a deux facon :
  11. 'Soit aller dans l'aide de VisualBASIC à KeyCode
  12. 'Soit faire un petit programme avec ceci :
  13. Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
  14. MsgBox KeyCode
  15. End Sub


 
Malheureusement, je n'arrive pas à le faire marcher car je ne compile pas (cela dit erreur de syntaxe à la 1ere ligne colonne 9 juste après declare).
 
Là je ne vois vraiment pas ce qui va pas...
 
Peux-tu m'aider stp?
 
Merci d'avance.
 
Silk007

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed