• ベストアンサー

WebBrowserで特定の場所をクリック

WebBrowserで表示されているページで特定の場所をクリックしたいのですが、対象となるページはswfになります。 座標自体は毎回変わることはありません。 しかし、もうひとつ問題がありクリックしたい部分はGUI上(ユーザーが見れない範囲にあります)。 ブラウザのsizeを調節してswfを特定の範囲だけ見れるようにしています(添付参照)。 そこのボタンをクリックするにはどうすればよろしいでしょうか?質問が複雑になってしまいましたが、回答お願いします。 またVB2005,2008両回答受け付けています(2008を推薦しています)。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

WebBrowser内のFlash(ActiveX Control)に使われているウィンドウハンドルに対し、マウスクリックのメッセージ(WM_LBUTTONDOWNとWM_LBUTTONUP)を送ることで、画面外にあるボタンでもクリックエミュレートすることができました。 FlashのウィンドウハンドルをWebBrowserからどうやって取得するか、がネックになります。 WinAPIのGetWindow/GetNextWindowまたはFindWindowExで「MacromediaFlashPlayerActiveX」というクラス名のウィンドウを見つけるくらいしか思いつきませんが。。。 かなり無理やりな方法なので、正攻法とは言えません。 もっと簡単に出来てもよさそうですけど、それらしい情報は見つかりませんでした。

関連するQ&A

  • WebBrowser内の特定の文字列が入ったリンクをクリックしたい

    いつもお世話になっております!! VB2005ユーザーです。 WebBrowser内の特定の文字列が入ったリンクをクリックしたいのですが、どのようにすればよいのでしょうか? WebBrowser.Document.Body.InnerText内の <a href="http://mtblog.ne.jp/next/">続きはこちら</a> 「続きはこちら」といった文字列が入ったリンクをクリックしたいのですが・・・。 稚拙な質問で申し訳ありません。

  • webbrowserに表示させたページのリンクをクリックしたい。

    お世話になります。 vb2005でウェブブラウザにページを表示させて webbrowser1.navigate("http://yahoo.co.jp") 5番目のURLをクリックさせるのはどうすればいいでしょうか? 教えてください。お願いします。

  • VB2005のWebBrowserで”クリック”する

    VB2005のWebBrowserを使い、楽天ブログをランダムボタンを自動で押して、ペラペラめくっていきたいと思い、下記プログラムを組みました。 しかし、実際実行すると、プログラムが強制終了。「問題が発生したため、○○.exe(プログラム名) を終了します。 ご不便をおかけして申し訳ありません。」 となってしまいます。 原因、解決策、もしくは代案を教えていただきたいです。 よろしくお願いいたします。 プログラム '楽天ブログの自分のページにアクセス WebBrowser1.Navigate("http://plaza.rakuten.co.jp/○○○○○") 'ランダムボタン(右上のボタン)をクリック WebBrowser1.Document.GetElementsByTagName("a").Item("ランダム").InvokeMember("click")

  • vb2005 webbrowserでリンクをクリックした後の表示待ちの方法

    VB2005を勉強中の者です。 WebBrowser1.Navigateを使ってwebページを開いた際は下記while文での表示待ちが機能するのですが、ページ表示後、さらにInvokeMemberを使って先のページにクリックで進んだ後では同一の表示待ち部分がうまく機能せずにそのまま次の処理へと進んでしまいいます。 どこに問題があるのか分からず困っております。どなたか助けていただけませんでしょうか? WebBrowser1.Navigate("https://yahoo.co.jp") '↓ここは機能します While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While WebBrowser1.Document.GetElementsByTagName("a").Item(15).InvokeMember("click") '↓これが機能しなくて困っています! While WebBrowser1.IsBusy Or WebBrowser1.ReadyState <> WebBrowserReadyState.Complete Application.DoEvents() End While '↓目的 TextBox1.Text = WebBrowser1.Document.Body.InnerText

  • VB2008 リンクをクリックしたい

    よろしくお願いします。 vb2008でwebbrowserに表示されたページの中のキーワードリンクをクリックするにはどのようなコードを記載すれば良いでしょうか? いろいろなページを見て試したのですが、うまくいきません。 例えばページ内に「ココをクリック」と言うリンクが10個あったとしたら、一番上の「ココをクリック」をクリックしたいのです。 すみませんが、お教えいただきたいです。 よろしくお願いいたします。

  • WebBrowser内のフォームをsubmitする(VB2008)

    VB2008でWebBrowserコントロール内のsubmitボタンを以下のコードでクリックしようとしているのですが、 WebBrowser1.Document.Forms("フォームの名前").InvokeMember("submit") NullReferenceExceptionはハンドルされませんでした。 オブジェクト参照がオブジェクト インスタンスに設定されていません。 というエラーが出ます。 ボタンがフォームの中ではなく、tableの中に配置されているようで、idも指定されておらず、nameとvalueだけ指定されているのですが何か方法はないでしょうか。 どなたかお願いします。

  • WebBrowserで特定の要素を削除

    Form内で表示されているWebBrowserで特定の要素たとえば<img>とか<script>とかを削除(排除)させて表示したいです。 VBを使い初めてまだ間もないです。 一応今使ってるのはVB2008ですが2005系の回答でも結構です^^ またYahoo!知恵袋のほうでも同じ質問が出ていたようですが解決はしていないようです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1019157800 試してみたもの Dim instance As HtmlElement Dim name As String instance.RemoveAttribute(name) これをDocument_Completedイベントの中に記述しました。以下エラー 'RemoveAttribute' は 'System.Windows.Forms.HtmlElement' のメンバではありません。 また、それに似たのもMSDNにありますが、駄目でした。 http://msdn.microsoft.com/ja-jp/library/system.windows.browser.htmlelement.removeattribute%28VS.95%29.aspx

  • WebBrowserにてsubmitの前にnavigateしてしまう

    いつもお世話になっております。 VB2005ユーザーです。 WebBrowser内の"submit"を押したあと、違うページに行きたいのですが、 "submit"を押す前に"Navigate"で指定しているページに行ってしまいます。 このようなコードを書いています。 With WebBrowser1 .Navigate("最初のURL") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop .Document.Forms(0).InvokeMember("submit") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop .Navigate("次の指定URL") Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete System.Windows.Forms.Application.DoEvents() Loop 「指定URL」は"submit"により新しいHTMLが生まれるので、その後の作業のためにどうしても"submit"を押したいのですが、上のようなコードですと先に「指定URL」に行ってしまいます。 "submit"をクリックせず、無視してしまうのです。 Navigate("次の指定URL")を外せばクリックしてくれるのですが・・・。 WebBrowserを完全に待機させる方法などが必要なのでしょうか? 宜しくご教授のほどお願い致します。

  • WebBrowser 複数のsubmit

    VB初心者です ご指導の程宜しくお願い致します visual basic 2008 でWebBrowserにて webページに複数のname属性のないsubmitがある場合どうやって選択して押す動作をさせるのでしょうか??? 下記:webのソース <input type="submit" value="変更する" class="formBt01" /> <input type="submit" value="戻る" class="formBt02" /> どちらかを選択できるようにしたいです 過去にも同じような質問がありましたが回答の通り試しましたが うまくいきません 自分が試したもの WebBrowser1.Document.Forms(0).InvokeMember("submit") もちろんwebソースにsubmitが二つあるので、動作しません WebBrowser1.Document.Forms(1).InvokeMember("submit") フォームで選ぶのかなと試しましたが何も動作しません WebBrowser1.Document.Forms("ボタンのname").InvokeMember("click") ボタンの名前がわからないので、これは使えず… どなたかご教授お願いします

  • WebBrowser コントロールでフレームを操作したり...

    お世話になります。 以下のWebBrowserコントロールの使用法について、ご教授をお願いしますm(_ _)m ■ハイパーリンクがクリックされた場合や、JavaScript等によるページの移動が行われる際に、ページを表示せずに .LocationURL を使ってリンク先を知る方法について ■フレームページの場合に、フレームのHTMLのURLが値が返されてしまい、フレーム内に表示されているページを取得する方法について ■表示しているHTMLの、フレームを指定してページを移動する方法について(WebBrowserコントロールによって、フレームを操作する方法について) 以上、1つでも構いませんので、知識をお持ちの方はご指導の程お願いしますm(_ _)m なお・・・ 開発環境は・・・ Visual Studio.NET(VB7/.NET Framework1.0)で開発しています。 ※.NET Framework 2.0環境は対応していません。ですので、.NET Framework 2.0等の命令は使えないです;;

専門家に質問してみよう