Simuler un clique sur un TWebBrowser [Résolu]

Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
- - Dernière réponse : L_art_ment
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
- 10 mars 2010 à 15:07
Messieurs, dames,

J'ai un petit soushi, enfin, un gros soushi pour moi

En fait, j'aimerais simuler un clique gauche sur un TWebBrowser à des coordonnées précises, par exemple 10px en X à partir du coins supérieur gauche du TWebBrowser et pareil en Y.. Bon alors j'y arrive de la maniére suivante :

var
Pt : TPoint; 
begin
{Get the point in the center of webbrowser}
Pt.x := WebBrowser1.Left + 10;
Pt.y := WebBrowser1.Top + 10;
{Convert Pt to screen coordinates}
Pt := ClientToScreen(Pt);
{Convert Pt to mickeys}
Pt.x := Round(Pt.x * (65535 / Screen.Width));
Pt.y := Round(Pt.y * (65535 / Screen.Height));
{Move the mouse}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
{Simulate the left mouse button down}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
{Simulate the left mouse button up}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
end;



Cependant cette méthode necessite de bouger le curseur de la sourie et que le WebBrowser soit visible, ce que je désir moi c'est simuler le clique sans bouger le curseur comme le fait la fonction SendMessage.
Donc après recherches sur le net, j'ai trouvé cette procedure :

var
  hWB:HWND;
begin
  hWB := FindWindowEx(WebBrowser1.Handle,0,'Shell DocObject View',nil);
  hWB := FindWindowEx(hWB,0,'Internet Explorer_Server',nil);
  if hWB <> 0 then begin

    SendMessage(hWB,WM_LBUTTONDOWN,0,MakeLParam(18,36));
    SendMessage(hWB,WM_LBUTTONUP,0,MakeLParam(18,36));
  end ;
end;



Mais cette procedure ne fonctionne pas... J'ai essayé egalement cette procedure avec
WebBrowser1.SetFocus;
entre deux...

Ainsi je me retourne vers vous pour savoir si vous avez une idée lumineuse à me faire partager !

Merci d'avance !



L'Armand joue, l'arme en joug... www.art-ment.com
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
3809
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
1 septembre 2019
32
3
Merci
Salut,

j'ai testé le deuxième code (D7 & D2009) et il fonctionne parfaitement !!


[hr]@+Cirec
[hr]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Cirec
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
1
3
Merci
Bon du coup, j'ai fais le test suivant :

J'ai utilisé la source se trouvant sur DelphiFr permettant d'énumérer les fenêtre ouvertes, ai lancé mon application, et là, je me suis appercu qu'après la fenêtre 'Internet Explorer_Server' il y avait la fenêtre 'MacromediaFlashPlayerActiveX' comme enfant de la précédente, correspondant à mon swf. J'ai donc modifié le code de la maniére suivante :


var
  hWB:HWND;
begin
  hWB := FindWindowEx(WebBrowser1.Handle,0,'Shell DocObject View',nil);
  hWB := FindWindowEx(hWB,0,'Internet Explorer_Server',nil);
  hWB := FindWindowEx(hWB,0,'MacromediaFlashPlayerActiveX',nil);
  if hWB <> 0 then begin
    WebBrowser1.SetFocus;
    SendMessage(hWB,WM_LBUTTONDOWN,0,MakeLParam(18,36));
    SendMessage(hWB,WM_LBUTTONUP,0,MakeLParam(18,36));
  end ;
end;


J'aurais dû y réfléchir avant de poser ma question !

Merci Cirec !
L'Armand joue, l'arme en joug... www.art-ment.com

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 198 internautes nous ont dit merci ce mois-ci

Commenter la réponse de L_art_ment
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
1
0
Merci
Salut Cirec !

Merci d'avoir fait le test, le fait que ça ne fonctionne pas chez moi peut-il être dû au fait que j'essaie de simuler un clique sur un Flash contenu dans le WebBrowser ?


L'Armand joue, l'arme en joug... www.art-ment.com
Commenter la réponse de L_art_ment
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
6 février 2013
1
0
Merci
Bon par contre, il y a des zones sur lesquelles ça fonctionne très bien, d'autres où ça ne fonctionne pas sur mon swf

Mais ça je ne pense pas que ce soit dû au code...

L'Armand joue, l'arme en joug... www.art-ment.com
Commenter la réponse de L_art_ment