News & Events
Dica: Como simular clique do mouse em um WebBrowser?
- 20 de setembro de 2007
- Posted by: Adriano Santos
- Category: delphi delphi2006 delphi2007 dicas webbrowser
Olá pessoal,
Elaborei uma pequena dica de como simular o pressionamento do mouse em um link no TWebBrowser.
A dica consiste em mover o mouse a uma coordenada específica e enviar comandos para pressionamento do mouse.
No evento onClick de um botão apenas chamados o método Navigate do TWebbrowser passando como parâmetro o conteúdo de um Edit com a url a ser carregada.
Depois no evento onDocumentComplete do TWebBrowser movemos e clicamos em um determinado link.
No exemplo estou testando com o site da UOL e passando as coordenadas fixas de um link. As coordenadas podem mudar de acordo com a resolução da tela e posição do link.
Na seção Downloads você pode baixar o exemplo completo.
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.Navigate(Edit1.Text);
end;
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
Pt : TPoint;
begin
Pt.X := 414;
Pt.Y := 388;
{Obtém o point no centro do Button1}
//Pt.x := Button2.Left + (Button2.Width div 2);
//Pt.y := Button2.Top + (Button2.Height div 2);
{Converte Pt para as coordenadas da tela }
Pt := ClientToScreen(Pt);
Pt.x := Round(Pt.x * (65535 / Screen.Width));
Pt.y := Round(Pt.y * (65535 / Screen.Height));
{Move o mouse}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
{Simula o pressionamento do botão esquerdo do mouse}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
{Simula soltando o botão esquerdo do mouse}
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
end;
Siga @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.
Siga também o autor @asrsantos
Adriano,
Bacana seu exemplo cara agora veja minha situação:
Voce nao teria uma solução onde eu pudesse fazer isso (simular o click no link) buscando pelo proprio link? Eu vou ter uma situação em que o TWebBrowser vai esta escondido ao usuario pois o que eu preciso na verdade é clicar neste link e pegar uma informacao na pagina que vem depois.
adriano muito bom msm viu…
tem como eu tirar algumas duvidas com vc em particular sobre esse código…
desde ja agradeço sua resposta
hum, só lembrando do anonimo
vou deixar meu email
edilson.onofre@hotmail.com
eu tenho um webbrowser que fiz em delphi7 com quase todas as funcionalidades de um webbrowser pago. inclusive eu implementei funcionalidades de visualizar uma grande variedade de tipos de arquivos sem ter que abrir o programa que edita a extensão. quem quiser os fontes: osmanobr@bol.com.br