Page 1 sur 1
forcer le click de souris
Publié : sam. 22/mai/2004 15:21
par Jenova
Salut tout le monde

, j'avais il y a quelque temps de ça un prog(exe) qui réusissai à positionner la souris (jusque la pas de problème pour refaire la meme chose) à une coordonnée quelconque et qui cliquai automatiquement à cette position... mais la je seche... je n'arrete pas de farfouiller sur le net à la recherche d'une fonction qui permetterai de forcer ce fameux click de souris mais pas moyen.
Vous qui avez de l'experience dans le purebasic (et C++ je suppose) conaissez-vous un moyen de forcer ce fameux click (de façon logicielle bien sur... il ne s'agit pas d'ouvrire un popup avec ecrit "on tient ta femme et tes gosses en otage... ou tu clique ou on les butte" lol

)
Publié : sam. 22/mai/2004 15:30
par fweil
Tu dois penser à mouse_event_() ?
Publié : sam. 22/mai/2004 15:47
par fweil
Voila, un source qui permet de comprendre.
Le programme permet de forcer le clic sur le bouton au milieu de la fenêtre même si on clique ailleurs !
Code : Tout sélectionner
#Window_Main = 0
#Gadget_Button = 0
#MOUSEEVENTF_MOVE = $1
#MOUSEEVENTF_ABSOLUTE = $8000
#MOUSEEVENTF_LEFTDOWN = $2
#MOUSEEVENTF_LEFTUP = $4
#MOUSEEVENTF_MIDDLEDOWN = $20
#MOUSEEVENTF_MIDDLEUP = $40
#MOUSEEVENTF_RIGHTDOWN = $8
#MOUSEEVENTF_RIGHTUP = $10
Procedure MouseEvent(Event.l)
Mem.l=GlobalAlloc_(0,8)
GetCursorPos_(Mem)
mouse_event_(Event | #MOUSEEVENTF_ABSOLUTE, PeekL(Mem) * ($FFFF / GetSystemMetrics_(0)), PeekL(Mem + 4) * ($FFFF / GetSystemMetrics_(1)), 0, GetMessageExtraInfo_())
GlobalFree_(Mem)
EndProcedure
WindowXSize = 640
WindowYSize = 480
Quit = #FALSE
If OpenWindow(#Window_Main, 0, 0, WindowXSize, WindowYSize, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "WebGadget")
AddKeyboardShortcut(#Window_Main, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
If CreateGadgetList(WindowID())
ButtonGadget(#Gadget_Button, WindowXSize / 2 - 30, WindowYSize / 2 - 10, 60, 20, "Beau bouton")
EndIf
; Note: if you want to use a local file, change last parameter to "file://" + path + filename
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
Quit = #TRUE
Case #PB_Event_Menu
Select EventMenuID()
Case #PB_Shortcut_Escape
Quit = #TRUE
EndSelect
Case #PB_Event_Gadget
Select eventgadgetid()
Case #Gadget_Button
Debug "Bouton cliqué"
EndSelect
Case #WM_LBUTTONDOWN
Case #WM_LBUTTONUP
SetWindowText_(WindowID(), "Non pas ici")
SetCursorPos_(GetSystemMetrics_(#SM_CXSCREEN) / 2, GetSystemMetrics_(#SM_CYSCREEN) / 2)
MouseEvent(#MOUSEEVENTF_LEFTDOWN)
Delay(100)
MouseEvent(#MOUSEEVENTF_LEFTUP)
SetWindowText_(WindowID(), "Non pas ici ... j'ai dit là")
EndSelect
Delay(1)
Until Quit
EndIf
TerminateProcess_(GetCurrentProcess_(), 0)
End
Publié : sam. 22/mai/2004 16:11
par Jenova
Merci pour ton super code
Mais helas ce n'était pas vraiment ça dont je parlais.
Il était question (désolé j'ai du mal à m'expliquer) de forcer un click de souris meme si l'utilisateur ne clique nul part.
une sorte de fonction ou de commande qui, à chaque fois qu'elle est appelée, clique à l'endroit ou pointe la souris.
Comme je le disais plus haut, j'avais dans le temps un prog sous forme d'executable qui faisais ça, mais aujourd'hui je ne le retrouve plus et je ne me souvient meme plus de son nom
C'est pourquoi je recherche un moyen de le refaire, et en + ça me fait apprendre des truc
Donc si vous conaissez une telle commande ou un procédé qui permet de forcer le click de souris d'un utilisateur (à l'insu de son plein gré lol) je suis preneur

Publié : sam. 22/mai/2004 16:21
par Chris
Voila un petit bout de code:
Au bout de 3 secondes, le programme appuie lui_même sur le bouton quit, et le relache.
J'ai mis un delay() pour qu'on voie bien le truc
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Btn_Quit
EndEnumeration
If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_SystemMenu, "Fenêtre 1",0)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Btn_Quit, 100, 170, 100, 25, "Quitter")
EndIf
SetTimer_(WindowID(),1,3000,0)
Repeat
Select WaitWindowEvent()
Case #WM_TIMER
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONDOWN,0,0)
Delay(300)
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONUP,0,0)
Case #PB_EventGadget
Select EventGadgetID()
;Case
;Case
Case #Btn_Quit : quit = 1
EndSelect
;Case
;Case
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf
Chris

Publié : sam. 22/mai/2004 17:53
par Oliv
Publié : jeu. 27/mai/2004 22:47
par Jenova
Merci à tous

Publié : ven. 28/mai/2004 5:56
par cederavic
le meme avec le curseur qui se positionne sur le boutons
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Btn_Quit
EndEnumeration
If OpenWindow(#Window_0, 300, 300, 300, 200, #PB_Window_SystemMenu, "Fenêtre 1",0)
If CreateGadgetList(WindowID(#Window_0))
ButtonGadget(#Btn_Quit, 100, 170, 100, 25, "Quitter")
EndIf
SetTimer_(WindowID(),1,3000,0)
Repeat
Select WaitWindowEvent()
Case #WM_TIMER
mouse.point
mouse\x = 150 + WindowX()
mouse\y = 182 + WindowY() + 23
SetCursorPos_(mouse\x, mouse\y)
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONDOWN,0,0)
Delay(800)
SendMessage_(GadgetID(#Btn_Quit),#WM_LBUTTONUP,0,0)
Case #PB_EventGadget
Select EventGadgetID()
;Case
;Case
Case #Btn_Quit : quit = 1
EndSelect
;Case
;Case
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
EndIf