- PR -

vb2005にてPostMessageを使ったWebBrowserコントロール内AdobeFlashのクリック方法について

1
投稿者投稿内容
NEIGE
会議室デビュー日: 2004/04/04
投稿数: 4
投稿日時: 2009-01-12 02:55
【環境】
・VB2005(MSVS2005)
・WinXP SP3
・Framework v2.0

VB2005にてフォーム(Form1)を作成し、その中にWebBrowserコントロール(WebBrowser1)を配置し、
そのWebBrowserに表示されるHTML内のAdobeFlashをクリックするプログラムを作成しております。

その中で、1つ解決できない問題があり、スレッドを立てさせていただきました。

今回、実装した手法としては、
「PostMessage(API/user32.dll)を利用し、WebBrowserに表示されたAdobeFlashをスクリーン座標を指定しPostMessageによりクリック」したいと考えております。

が、PostMessageにてクリックさせる部分が、動作されていないようなのですが、
これ以上自身にて確認が取れなくなり、皆様のお力をお借りしたいと...。

'---以下コード
Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Public Declare Function PostMessage Lib "user32.dll" Alias "PostMessageA" (ByVal hWnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

  '左クリックの設定
  Const WM_LBUTTONDOWN As Integer = &H201
  Const WM_LBUTTONUP As Integer = &H202

  'Form1のウィンドウハンドルを取得
  Dim hwnd As Integer = FindWindowEx(0, 0, vbNullString, "Form1")

  'スクリーン座標の指定(x=100、y=100の位置にAdobeFlashがあるものと想定)
  Dim lParam As Integer
  lParam = (100 * &H10000) + 100

  'PostMessageによりマウスクリック
  MsgBox(PostMessage(hwnd, WM_LBUTTONDOWN, 0, lParam))
  MsgBox(PostMessage(hwnd, WM_LBUTTONUP, 0, lParam))

End Sub
'--------

mouse_eventにてマウスポインタを座標へ移動し、クリックする方法においては成功しているのですが、
どうしてもマウスポインタを動かしたくなくPostMessageにて出来ないかと試行錯誤しております。

  'マウスカーソルを Flash 上に移動してクリック。
  Cursor.Position = New Point(Form1.Left + Form1.WebBrowser1.Width / 2, Form1.Top + SystemInformation.CaptionHeight + Form1.WebBrowser1.Top + 100)
  'マウスの左ボタンを押す
  Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  'マウスの左ボタンを離す
  Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

お手数をお掛けいたしますが、宜しくお願いいたします。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2009-01-14 01:31
引用:

NEIGEさんの書き込み (2009-01-12 02:55) より:
mouse_eventにてマウスポインタを座標へ移動し、クリックする方法においては成功しているのですが、
どうしてもマウスポインタを動かしたくなくPostMessageにて出来ないかと試行錯誤しております。


私は知識がそれほどなく、直接の回答ではありませんが、ご質問を見てちょっと思った疑問を書きます。
目的は件名にあるように WebBrowser のさらに AdobeFlash のクリックということですが、それ以前に WebBrowser だけでは成功しているのでしょうか?あるいは WebBrowser もなしの Form だけでは成功しているのでしょうか?
(マウスポインターを動かさないやりかたで。)

もしも Form でできなければ、WebBrowser もおそらく無理だと思いますし、もしも Form でできても WebBrowser でできなければ、AdobeFlash もおそらく無理だと思います。
NEIGE
会議室デビュー日: 2004/04/04
投稿数: 4
投稿日時: 2009-01-20 17:16
unibonさま

>> もしも Form でできなければ、WebBrowser もおそらく無理だと思いますし、もしも Form でできても WebBrowser でできなければ、AdobeFlash もおそらく無理だと思います。

上記の件、なるほど…。
確かに、WebBrowserコントロールに対してイベントを当てる事ができなければ、難しいということになりますね…。勉強になります。

ということで、基本的にマウスを擬似的に動かす方法にて進めてみたいと思います。
ありがとうございます。<m(__)m>
1

スキルアップ/キャリアアップ(JOB@IT)