Page 1 sur 1
Simulation d'un Click sur un WebGadget
Publié : ven. 25/juil./2008 21:10
par Cls
Bonjour à tous,
J'ai un souci avec le WebGadget. J'utilise le très bon code de Fr34k and Zapman : WG library (disponible ici :
http://www.purebasic.fr/english/viewtop ... gadgetexec).
J'aimerais simuler un click sur un bouton dans le WebGadget afin d'envoyer les données d'un formulaire. Pensez - vous que cela soit possible ?
Publié : ven. 25/juil./2008 22:21
par Gillou
Si tu connais la position aucun problème
Placement de la souris
Puis clic
Code : Tout sélectionner
ProcedureDLL MouseClick(Parameter) ; Simule une action sur les boutons de la souris (EX : MouseClick(#MOUSEEVENTF_RIGHTDOWN) : mouseclick(#MOUSEEVENTF_RIGHTUP))
Mem.l = GlobalAlloc_(0, 8)
GetCursorPos_(Mem)
re = mouse_event_(Parameter | #MOUSEEVENTF_ABSOLUTE, PeekL(Mem) * ($FFFF / GetSystemMetrics_(0)), PeekL(Mem + 4) * ($FFFF / GetSystemMetrics_(1)), 0, GetMessageExtraInfo_())
GlobalFree_(Mem)
ProcedureReturn re
EndProcedure
Si tu ne connais pas la position, parser le code, mais la autant réinventé un navigateur ou pourquoi pas par reconnaissance graphique de l'emplacement. Bref, la ça deviendrai chaud, j'espère que tu peux utiliser la première soluce
Ou encore, tu peux peut-être récupérer le lien du bouton puis via injection de js récupérer les valeurs et enfin générer le lien de la nouvelle page. Tout dépend du type de formulaire

Publié : ven. 25/juil./2008 22:44
par Cls
Merci pour ton code Gillou je vais tester ça.
Je crois que SetCursorPos_ positionne la souris par rapport à l'écran. Y'a t - il moyen de la positionner par rapport à ma fenêtre contenant mon WebGadget ? (Je vais faire une petite recherche, il me semble que j'ai déjà vu ça

)
Publié : ven. 25/juil./2008 23:31
par Gillou
Plusieurs méthodes existent pour récup la position d'un gadget, en voici une
Code : Tout sélectionner
p.point
If OpenWindow(0, 0, 0, 300, 200, "", #PB_Window_SystemMenu) And CreateGadgetList(WindowID(0))
ButtonGadget(0, 20, 20, 100, 30, "test")
TextGadget(1, 20, 50, 200, 20, "")
Repeat
Select WaitWindowEvent()
Case #WM_MOVE
p\x=0 : p\y=0 ; Reinitialisation
ClientToScreen_(GadgetID(0), @p)
SetWindowTitle(0, "Position du bouton : "+Str(p\x)+" : "+Str(p\y))
Case #WM_MOUSEMOVE
GetCursorPos_(@p)
SetGadgetText(1, "Position de la souris : "+Str(p\x)+" : "+Str(p\y))
Case #PB_Event_CloseWindow
quit=1
EndSelect
Until quit=1
EndIf
Publié : sam. 26/juil./2008 0:21
par Cls
Merci Gillou, je vais voir ce que je vais pouvoir faire avec ça !