mouse_event

Programmation d'applications complexes
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

mouse_event

Message par SPH »

Il y a 2 ou 3 ans, on pouvais dire a PB de simuler un clic de souris. Maintenant, ca ne marche plus. Quelqu'un a une explication ?

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(100)

SetCursorPos_(470,50) ; mes coordonnées qui pointe ma souris sur PB STOP

MouseEvent(2) : Delay(5) ; clic gauche souris
MouseEvent(4) : Delay(5) ; boutton relaché

ForEver

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: mouse_event

Message par venom »

si tu veut, cette procédure fait de l'autoclic mais je n'est pas intégré de timer juste un delay. :wink:

Code : Tout sélectionner

Procedure clic()
  Repeat
    Event = WindowEvent ()
    If start = 1
      Delay (temp) ; delay avant 2em appuis
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTUP, xm, ym, 0, 1) ; appuis
        Delay (2)
      EndIf
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTDOWN, xm, ym, 0, 1) ; relache
        If Event = #WM_RBUTTONDOWN
          MessageRequester("information", "test", 0)
        EndIf
      EndIf
      If temp > 11 ; si temp =10 on est en mode repetitif
        start = 0 ; le programme va clicker sans arret (utile dans certain jeux)
      EndIf
    EndIf
    
    If Event = #WM_LBUTTONDOWN
      MessageRequester("information", "voila apres avoir cliquer sur OK vous avez 5 secondes avant l'autoclic", 0)
      Delay(5000)
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTUP, xm, ym, 0, 1) ; appuis
        Delay (2)
      EndIf
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTDOWN, xm, ym, 0, 1) ; relache
      EndIf
      start = 1
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  Event = mouse_event_ (#MOUSEEVENTF_LEFTUP, xm, ym, 0, 1)
EndProcedure
regarde si tu peut en tirer quel que chose :wink:





@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: mouse_event

Message par SPH »

Nan, ca ne marche plus...

Code : Tout sélectionner

Repeat
Event = mouse_event_( #MOUSEEVENTF_LEFTUP, xm, ym, 0, 1) ; appuis
Delay(5)   
Event = mouse_event_( #MOUSEEVENTF_LEFTDOWN, xm, ym, 0, 1) ; relache
Delay(600)
ForEver


!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: mouse_event

Message par Backup »

venom a écrit :si tu veut, cette procédure fait de l'autoclic mais je n'est pas intégré de timer juste un delay. :wink:

Code : Tout sélectionner

Procedure clic()
  Repeat
    Event = WindowEvent ()
    If start = 1
      Delay (temp) ; delay avant 2em appuis
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTUP, xm, ym, 0, 1) ; appuis
        Delay (2)
      EndIf
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTDOWN, xm, ym, 0, 1) ; relache
        If Event = #WM_RBUTTONDOWN
          MessageRequester("information", "test", 0)
        EndIf
      EndIf
      If temp > 11 ; si temp =10 on est en mode repetitif
        start = 0 ; le programme va clicker sans arret (utile dans certain jeux)
      EndIf
    EndIf
    
    If Event = #WM_LBUTTONDOWN
      MessageRequester("information", "voila apres avoir cliquer sur OK vous avez 5 secondes avant l'autoclic", 0)
      Delay(5000)
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTUP, xm, ym, 0, 1) ; appuis
        Delay (2)
      EndIf
      If Event = mouse_event_ ( #MOUSEEVENTF_LEFTDOWN, xm, ym, 0, 1) ; relache
      EndIf
      start = 1
    EndIf
    
  Until Event = #PB_Event_CloseWindow
  Event = mouse_event_ (#MOUSEEVENTF_LEFTUP, xm, ym, 0, 1)
EndProcedure
regarde si tu peut en tirer quel que chose :wink:





@++

heeee ! elle est de moi cette procedure !!
elle est tiré de mon prg de triche dans les jeux Flash ! ;)


sinon tu as ça qui marche (testé 4.50)
un clique n'importe ou sur la fenetre
fera cliquer avec un beep , plusieurs fois (tant que clic maintenu)
ce qui prouve que le clic automatique a bien lieu :)

Code : Tout sélectionner

 ;/Constantes Window
Declare TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
Enumeration
      #Window_0
EndEnumeration

;/Constantes Gadget
Enumeration
      #Btn_Quit
EndEnumeration


If OpenWindow(#Window_0, 300, 300, 300, 200,"Fenêtre 1" ,#PB_Window_SystemMenu, 0)
 
  
      If CreateGadgetList(WindowID(#Window_0))
            ButtonGadget(#Btn_Quit, 100, 170, 100, 25, "Quitter")
      EndIf
      
      
      Repeat
            Select WaitWindowEvent()
                  Case #WM_LBUTTONDOWN
                        SetTimer_(WindowID(#Window_0),1,100,@TimerProc()) ; ici tu regle la vitesse de click !!
                  Case #WM_LBUTTONUP
                        KillTimer_(WindowID(#Window_0),1)
                  Case #PB_Event_Gadget
                        Select EventGadget()
                                    ;Case
                                    ;Case
                              Case #Btn_Quit : Quit = 1
                        EndSelect
                        ;Case
                        ;Case
                  Case #PB_Event_CloseWindow : Quit = 1
            EndSelect
      Until Quit = 1
      End
EndIf


Procedure TimerProc(hwnd.l, uMsg.l, idEvent.l, dwTime.l)
      Select uMsg
            Case #WM_TIMER
                  Select idEvent
                        Case 1
                              ; Ici, le code à executer toutes les 100 em de secondes
                              SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONDOWN,0,0) 
                              beep_(440,10)
                  EndSelect
      EndSelect
    EndProcedure
  
  
Avatar de l’utilisateur
venom
Messages : 3137
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: mouse_event

Message par venom »

Ah c'etais de toi je ne savais plus de qui ça vennais ;) oui en effet c'etais pour tricher dans les jeux flash a l'époque ;)






@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: mouse_event

Message par SPH »

Dobro, il y a une petite fenetre avec le bouton QUITTER qui apparait, et c'est tout. Je place la souris sur quitter mais ca ne clique pas...
Peut etre le SP3 ou une mise a jour spyware search and destroy.......

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: mouse_event

Message par lepiaf31 »

Chez moi ceci marche très bien (PB 4.50):

Code : Tout sélectionner

Delay(5000)
var.POINT
GetCursorPos_(@var)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, var\x, var\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, var\x, var\y, 0, 0)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: mouse_event

Message par Backup »

SPH a écrit :Dobro, il y a une petite fenetre avec le bouton QUITTER qui apparait, et c'est tout. Je place la souris sur quitter mais ca ne clique pas...
Peut etre le SP3 ou une mise a jour spyware search and destroy.......
un clique n'importe ou sur la fenetre
fera cliquer avec un beep , plusieurs fois (tant que clic maintenu)
ce qui prouve que le clic automatique a bien lieu :)
si je n'avais pas mis de commande de depart (un premier click n'importe ou sur la fenetre)
l'auto click aurai fermé la fenetre avant meme que tu l'ai aperçut !! :roll: :lol:
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: mouse_event

Message par SPH »

lepiaf31 a écrit :Chez moi ceci marche très bien (PB 4.50):

Code : Tout sélectionner

Delay(5000)
var.POINT
GetCursorPos_(@var)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, var\x, var\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, var\x, var\y, 0, 0)
Merci. Oui ca maaaarche
C'est quoi var\x ? La coordonnée X de la souris ? Ton code interroge la position de la souris ?

Pour le code de Dobro, ca ne marche pas chez moi (ou plutot je n'ai pas compris ce qu'il fallait faire)...

EDIT :
Pourquoi en boucle ca ne marche pas ?

Code : Tout sélectionner

Repeat
Delay(1000)
var.POINT
GetCursorPos_(@var)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, var\x, var\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, var\x, var\y, 0, 0)
ForEver


!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: mouse_event

Message par lepiaf31 »

SPH a écrit :
lepiaf31 a écrit :Chez moi ceci marche très bien (PB 4.50):

Code : Tout sélectionner

Delay(5000)
var.POINT
GetCursorPos_(@var)
mouse_event_(#MOUSEEVENTF_LEFTDOWN, var\x, var\y, 0, 0)
mouse_event_(#MOUSEEVENTF_LEFTUP, var\x, var\y, 0, 0)
Merci. Oui ca maaaarche
C'est quoi var\x ? La coordonnée X de la souris ? Ton code interroge la position de la souris ?
Oui c'est pour avoir la position actuelle de la souris.
Répondre