Simuler un clique sur un TWebBrowser [Résolu]

Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
- 9 mars 2010 à 21:12 - Dernière réponse :
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
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 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 10 mars 2010 à 11:56
3
Merci
Salut,

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


[hr]@+Cirec
[hr]

Merci Cirec 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Cirec
Meilleure réponse
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
- 10 mars 2010 à 13:28
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

Merci L_art_ment 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de L_art_ment
Messages postés
316
Date d'inscription
vendredi 21 septembre 2007
Dernière intervention
6 février 2013
- 10 mars 2010 à 13:16
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
Dernière intervention
6 février 2013
- 10 mars 2010 à 15:07
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.