0

我多次运行一个 Delphi 应用程序,我需要将每个应用程序置于顶部并模拟鼠标单击其表单上的某处。

在我的应用程序中,我有一个 TWebBrowser 组件,我想单击该浏览器中的某个位置。问题是我需要单击该浏览器内的 flash 对象。我试图让 ClassName 和 Handle 点击 flash,但不适用于所有网站。所以唯一可行的就是模拟鼠标点击。

例如,我将此链接加载到浏览器http://bit.ly/XWaelU中,并尝试模拟从内部 Flash 播放器单击大“播放”按钮。

有人可以帮助我提供有关如何完成此操作的示例代码吗?我认为应用程序必须以固定位置启动,所以点击的坐标保持不变,对吧?

谢谢。

4

1 回答 1

0

假设您要单击窗口上的控件,该控件相对于窗口的位置已知,您可以从中获得(可以获得)句柄,您可以使用它。仅在当前表单上演示。也许适应你的条件。

Procedure SetWindowTopAndClickOnRelPos(wnd:HWND;Pos:TPoint);
var
  ChildControlHandle:HWND;
begin
  SetForegroundWindow(wnd);
  ChildControlHandle:=  ChildWindowFromPoint(WND,pos);
  SendMessage(ChildControlHandle,WM_LButtonDown,0,5*$FFFF + 5);
  SendMessage(ChildControlHandle,WM_LButtonUp,0,5*$FFFF + 5);
  Form4.Memo1.Lines.Add(Format('ChildControlHandle: %d',[ChildControlHandle]));
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
     Memo1.Lines.Add(Format('Window: %d',[Handle]));
     Memo1.Lines.Add(Format('Button: %d',[button2.Handle]));
     SetWindowTopAndClickOnRelPos(handle,Point(Button2.Left + 2,Button2.Top + 2));
end;

procedure TForm4.Button2Click(Sender: TObject);
begin
  Showmessage('Hallo');
end;
于 2012-12-13T10:19:55.080 回答