Page 2 sur 3

Publié : mer. 05/juil./2006 15:59
par Cls
poshu a écrit :Je rejoins Dobro pour dire que c'est vraiment des fonctions tendancieuses... Et si c'est pas le cas, plutot que de nous le dire, pourquoi ne pas donner des exemples d'application pas trop louche?
keyb_event() : j'utilise cette fonction pour modifier les données et le VBA d'un classeur Excel. J'ai posté à ce sujet il y a quelques temps et c'est la réponse qu'on m'a proposée. Ca permet de ne pas utiliser de fonctions trop compliquées.

Certes elle peut être "détournée" à des fins malveillantes mais c'est également le cas avec la fonction FindString() ! N'importe quelle fonction peut être détournée, en réagissant comme ca autand arrêter la programmation et se mettre au tricot...

Publié : mer. 05/juil./2006 16:02
par Backup
je viens de repondre juste avant ton message :D

Publié : mer. 05/juil./2006 16:03
par Flype
@cls

#good
+1

Publié : mer. 05/juil./2006 16:06
par Cls
Dobro a écrit :je viens de repondre juste avant ton message :D
Exact ! Z'avais pas vu... :D

Publié : mer. 05/juil./2006 16:18
par SPH
Je vous indique ce qui a commencé a devenir une idée obsedante :
http://www.arcadecabin.com/play/kitten_cannon.html
J'ai joué tres longtemps a ce jeu et je me disais que simuler un utilisateur serait genial. Je voulais pondre un code qui joue a ce jeu et analyse le plus grand score (le meilleur score est indiqué en vert et pas en rouge). Ainsi, au bout de 24h de jeu, j'etais curieux de connaitre le resultat.

Voila pkoi une emulation d'evenements physiques me plait beaucoup !!!
Et je souhaite qu'il soit integré officiellement dans PB :wink:

Publié : mer. 05/juil./2006 16:27
par Flype
franchement, autant l'idée n'est pas trop mauvaise,
autant fred n'est pas du tout obligé de l'intégrer à purebasic.

tu peux te faire une include ou une userlibrary, non ?

Publié : mer. 05/juil./2006 16:40
par SPH
Flype a écrit :franchement, autant l'idée n'est pas trop mauvaise,
autant fred n'est pas du tout obligé de l'intégrer à purebasic.

tu peux te faire une include ou une userlibrary, non ?
Si je savais le faire, je le coderais mais helas, il y a des domaines ou je suis completement nul !!

Mais franchement, cette idée est une approche nouvelle et tres directe sur ce que j'appellerais l'interoperabilité et la creation d'automatisme !

Flype : si tu veux le coder, je ne suis pas contre, bien au contraire !! :wink:

Publié : mer. 05/juil./2006 17:37
par SPH
Bon, on avance, c'est super.
Alors, j'ai testé ce petit code sur differentes choses :

Code : Tout sélectionner

vk=32 ; chr(32)=ESPACE
Repeat ; emule l'appuie de la touche ESPACE toutes les 1 seconde
Delay(1000)
keybd_event_(vk,0,0,0)
keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key. 
ForEver
Résultat, beaucoup de choses réagissent mais pas le jeu flash justement !!

Je ne desespere pas et vais coder une emulation de clic de souris au bon endroit....

Publié : mer. 05/juil./2006 18:07
par SPH
Et voila un code manipulant la souris. Ca pointe le mot CONTINUER du jeu flash et ca clique !
Et la, la souris est parfaitement emulé (contrairement aux touches pour un truc en flash) :

Code : Tout sélectionner

 Procedure MouseEvent(Ereignis.l) 
    Mem.l=GlobalAlloc_(0,8) 
    GetCursorPos_(Mem) 
    mouse_event_(Ereignis | $8000,PeekL(Mem)*($FFFF/GetSystemMetrics_(0)),PeekL(Mem+4)*($FFFF/GetSystemMetrics_(1)),0,GetMessageExtraInfo_()) 
    GlobalFree_(Mem) 
EndProcedure 

Repeat 
Delay(3000)

SetCursorPos_(660,640) ; mes coordonnées qui pointe ma souris sur le mot CONTINUER du jeu flash
MouseEvent($2) : MouseEvent($4) ; clic de souris

keybd_event_(vk,0,0,0)
keybd_event_(vk,0,#KEYEVENTF_KEYUP,0) ; Press the normal key. 
ForEver

Publié : mer. 05/juil./2006 19:32
par Dr. Dri
En gros ca ressemble à l'entry buffer de DB sauf qu'il veut pouvoir y ajouter des choses

Ca peut aussi s'utiliser pour des macros
on enregisre une série d'évennements (souris, clavier, raccourcis) et on les rebalance à volonté

[HS]
Super ce jeu, ca rapelle la version trash du lancé de pinguins
j'ai réussi à aller jusqu'à 1744 pieds ^^
(et je suis monté à plus de 120 pieds aussi)
[/HS]

Dri

Publié : mer. 05/juil./2006 22:15
par SPH
je comprend pas trop qu'un flash ne prenne pas ce qu'on entre dans le "tambon clavier" ! Donc, j'imagine 2 choses : soit nous n'entrons pas assez en amont l'instruction, soit flash interroge d'une autre facon le clavier...

comme eric et ramzy : je ne vois que cette explication :lol:

Publié : mer. 05/juil./2006 22:42
par Flype
SPH a écrit :je comprend pas trop qu'un flash ne prenne pas ce qu'on entre dans le "tambon clavier" ! Donc, j'imagine 2 choses : soit nous n'entrons pas assez en amont l'instruction, soit flash interroge d'une autre facon le clavier...

comme eric et ramzy : je ne vois que cette explication :lol:
peut etre que ton objet flash n'a pas le 'focus' tout simplement (?)

Publié : mer. 05/juil./2006 23:35
par Dorian
bah les flash sont un peu bizard :? . J'avais programmé un truc pour cacher les fenêtres 8) mais à chaque fois les flashs (exe ou swf) reste affichés ou plantent :evil: .

Bref ils sont bizards :mad:

Publié : jeu. 06/juil./2006 0:34
par SPH
Flype a écrit :
SPH a écrit :je comprend pas trop qu'un flash ne prenne pas ce qu'on entre dans le "tambon clavier" ! Donc, j'imagine 2 choses : soit nous n'entrons pas assez en amont l'instruction, soit flash interroge d'une autre facon le clavier...

comme eric et ramzy : je ne vois que cette explication :lol:
peut etre que ton objet flash n'a pas le 'focus' tout simplement (?)
Le focus, C a dire : sont ils selectionné ?
Si c'est ca, oui, je les selectionne moi meme en cliquant dans le flash...

Publié : sam. 08/juil./2006 17:38
par SPH
TROP BIEN
http://media.nothingtoxic.com/uploads/8 ... 518246.swf
Ouvrez ce jeu et cliquez sur PLAY GAME.
Ensuite, ouvrez PB et mettez mon code.
Trouvez les bonnes coodonnées pour que le premier "SetCursorPos" pointe bien IE dans la barre de tache et pour que le 2eme pointe le jeu, puis laissez PB jouer au jeu :P

Code : Tout sélectionner

Procedure MouseEvent(Ereignis.l) 
    Mem.l=GlobalAlloc_(0,8) 
    GetCursorPos_(Mem) 
    mouse_event_(Ereignis | $8000,PeekL(Mem)*($FFFF/GetSystemMetrics_(0)),PeekL(Mem+4)*($FFFF/GetSystemMetrics_(1)),0,GetMessageExtraInfo_()) 
    GlobalFree_(Mem) 
EndProcedure

SetCursorPos_(330,1010) ; pointe IE dans la barre de lancement windows

MouseEvent($2) : MouseEvent($4) ; clic de souris pour mettre au premier plan le jeu

SetCursorPos_(640,512) ; pointe le jeu


Repeat
Delay(100)
MouseEvent($2) : MouseEvent($4) ; clic le jeu
Delay(100)
MouseEvent($2) : MouseEvent($4) ; demarre le velo
Delay(2430+Random(50)) ; attente raisonnable
MouseEvent($2) : MouseEvent($4) ; shoot du velo
ForEver