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

Code : Tout sélectionner

SetCursorPos_(x, y)
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 :roll:

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 !