- - PR -
vb2005にてPostMessageを使ったWebBrowserコントロール内AdobeFlashのクリック方法について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 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) お手数をお掛けいたしますが、宜しくお願いいたします。 | ||||
|
投稿日時: 2009-01-14 01:31
私は知識がそれほどなく、直接の回答ではありませんが、ご質問を見てちょっと思った疑問を書きます。 目的は件名にあるように WebBrowser のさらに AdobeFlash のクリックということですが、それ以前に WebBrowser だけでは成功しているのでしょうか?あるいは WebBrowser もなしの Form だけでは成功しているのでしょうか? (マウスポインターを動かさないやりかたで。) もしも Form でできなければ、WebBrowser もおそらく無理だと思いますし、もしも Form でできても WebBrowser でできなければ、AdobeFlash もおそらく無理だと思います。 | ||||
|
投稿日時: 2009-01-20 17:16
unibonさま
>> もしも Form でできなければ、WebBrowser もおそらく無理だと思いますし、もしも Form でできても WebBrowser でできなければ、AdobeFlash もおそらく無理だと思います。 上記の件、なるほど…。 確かに、WebBrowserコントロールに対してイベントを当てる事ができなければ、難しいということになりますね…。勉強になります。 ということで、基本的にマウスを擬似的に動かす方法にて進めてみたいと思います。 ありがとうございます。<m(__)m> |
1