Ajuda - Busca - Membros - Calendário
Versão Completa: (Resolvido) Simular clique no Menu CSS num WebBrowser
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
LuloNet
Olá. Pessoal.

Aguém sabe que alguma função ou uma forma pela qual se possa simular um clique num Menu tipo CSS
num site carregado pelo componente WebBrowser ou EmbeddedWB.

Desde já agradeço pela dica.
Jhonas
QUOTE
Aguém sabe que alguma função ou uma forma pela qual se possa simular um clique num Menu tipo CSS
num site carregado pelo componente WebBrowser ou EmbeddedWB.


Uma das formas seria atrvés de coordenadas ( posição x e y do mouse ) da janela onde esta o item que devera ser clicado

exemplo:

CODE
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OleCtrls, SHDocVw, StdCtrls;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Button2: TButton;
    procedure WebBrowser1Enter(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure MouseClickLeft(X, Y: Integer);
var Pt : TPoint;
begin
   Pt.X := X;
   Pt.Y := Y;
   Pt.x := Round(Pt.x * (65535 / Screen.Width));
   Pt.y := Round(Pt.y * (65535 / Screen.Height));
   Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
   Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
   Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
end;

procedure TForm1.WebBrowser1Enter(Sender: TObject);
begin
   WebBrowser1.Navigate('http://www.autopecasxavier.com.br/');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   MouseClickLeft(100, 150); // coordenada da tela onde esta o item que quer clicar
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var Pt : TPoint;
begin
   Pt.X := 0;
   Pt.Y := 0;
   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;

end.


Neste caso eu coloquei um botão para voce poder testar o evento ... entretanto para obter a posição correta da posição do item na janela, a mesma deverá estar maximizada.

abraço

LuloNet
Obrigado pela dica Amigo Jhonas.
Vou testar, agora.

Abraço.
LuloNet
RESOLVIDO.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.