0

Delphi アプリケーションを複数回実行していますが、それぞれを一番上にして、フォームのどこかでマウス クリックをシミュレートする必要があります。

私のアプリには TWebBrowser コンポーネントがあり、そのブラウザのどこかをクリックしたいと考えています。問題は、そのブラウザ内のフラッシュ オブジェクトをクリックする必要があることです。ClassName と Handle を取得してフラッシュをクリックしようとしましたが、すべての Web サイトで機能していません。したがって、機能する唯一のことは、マウスのクリックをシミュレートすることです。

たとえば、このリンクをブラウザーhttp://bit.ly/XWeelUにロードし、内部のフラッシュ プレーヤーから大きな「再生」ボタンのクリックをシミュレートしようとしています。

これをどのように行うことができるかについて、誰かがサンプルコードを手伝ってくれますか? クリックの座標が同じままになるように、アプリケーションを固定位置で起動する必要があると思いますよね?

ありがとう。

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 に答える