none
開いているブラウザからURLを取得するには? RRS feed

  • 質問

  • Visual basic Express 2008 です。

    あちこち探して下記のように記述しました。

    -----------------------------------------------

        Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
            '-------開いているブラウザのURLを取得する。----------

            Dim WebBrz As WebBrowser
            If WebBrz.Visible = True Then
                TextBox16.Text = WebBrz.Url.ToString()

            End If
        End Sub

    -----------------------------------------------

    これではコンパイルエラーになり

    「Newを使う」ようにとのことなのですがわからず、下記に変更しました。ToString()もエラーかも知れません。

    ------------------------------------------------

        Private Sub Button18_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button18.Click
            '-------開いているブラウザのURLを取得する。----------
            Dim WebBrz As New WebBrowser
            If WebBrz.Visible = True Then
                TextBox16.Text = WebBrz.Url.ToString()
            End If
        End Sub

    ------------------------------------------------

    やはり同じコンパイルエラーです。

    同様の投稿があり、重複するようで申し訳ありません。

    サンプルは他にも幾つか見つけたのですが、すごく複雑でURLというキーワードさえ含まれず超初心者には内容が理解出来ず、上記を修正しただけでURLを取得できるようにしたいと思っています。

    どうかよろしくお願いします。

     

     

    2008年6月22日 13:43

回答

すべての返信

  • そもそも、「開いているブラウザ」ってなんでしょう?

    自分のフォーム内で使用している WebBrowser コントロール? それともほかのプロセスのブラウザですか?

    ほかのプロセスのブラウザならそれはそれで様々あります。IE や Firefox、あるいは Sleipnir 。それぞれバージョンの違いもあるでしょうし、タブブラウザなら開いてる URL なんて複数になります。

     

     K16オジン さんからの引用

    サンプルは他にも幾つか見つけたのですが、すごく複雑でURLというキーワードさえ含まれず超初心者には内容が理解出来ず、上記を修正しただけでURLを取得できるようにしたいと思っています。

    情報が古いって可能性もありますが、大抵の場合は必要だからそれだけ複雑なコードになるのです。

    内容が理解できないのなら諦めるしかないです。

    掲示板などで理解の手助けを得ることはできるかもしれません。

    2008年6月22日 14:39
  • 質問の説明が悪かったのでしょうか?あるソフトでやっていたのを見て取り入れたかったのです。

    IEを立ち上げておいて、一方で自作のソフトを起動し、その自作ソフトからIEで開いているURLを取得したいのです。タブブラウザでも表示中のタブのURLという意味です。また、出来ればFireFox,Safariなど共通で取得できる方法がベストなのですが、無理ならIEだけでも結構です。

    あるいは、小生の記述したステートメント程度では全く手の施しようがないと云うのが結論なのでしょうか?

     

    2008年6月23日 9:45
  • 最初に提示されたコードは自分のフォーム内でWebBrowser コントロールを使ってWEBを表示した場合だと思います。

    http://www.microsoft.com/japan/msdn/thisweek/300x10/Phase3/WebBrowser/vb.aspx

     

    予想ですが、「あるソフト」はブラウザのURLが表示されるコンボボックスのハンドルをFindWindowなどで探してURLを取得しているのではないでしょうか。

    FindWindow(win32 API)の代わりになる.NETクラスライブラリがあるかは分かりません。

    2008年6月23日 11:54
  •  C.John さんからの引用
    予想ですが、「あるソフト」はブラウザのURLが表示されるコンボボックスのハンドルをFindWindowなどで探してURLを取得しているのではないでしょうか。

     

    私も 「あるソフト」 がどのような挙動をするのか正確なところは分かりませんが、ブラウザのコンボボックス内の文字列は、ページが開かれた後にもユーザの手によって勝手に書き換えることができるので、現在開いているページのURL=コンボボックス内の文字列、と解釈できない場合もあると思うのですが・・・

    2008年6月23日 13:08
  •  K16オジン さんからの引用

    FireFox,Safariなど共通で取得できる方法がベスト

    それらのアプリケーションが共通の仕組みを実装・提供している必要があります。

    しかし、そのような仕組みは存在しないと思います。

     

     K16オジン さんからの引用

    あるいは、小生の記述したステートメント程度では全く手の施しようがないと云うのが結論なのでしょうか?

    .NET Frameworkのクラスだけでは完結できなさそうな気がします。

    具体的な解決の手法までは調べていませんが、COMを使うとか、Win32APIを使うとかが必要になるのではないかなと考えています。

     

     

    「IE URL 取得」で検索。

    http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&num=50&q=IE+URL+%E5%8F%96%E5%BE%97

     

    http://www.usefullcode.net/2006/12/ieihtmldocument2.html

    http://jumbofoot.cocolog-nifty.com/yass_vbnet_tips/2007/02/shellhtmldocume_f1cd.html

     

    現状で使えるコードかまでは見ていません。

    2008年6月23日 14:03
    モデレータ
  • C.Johnさん、豊田さん、Azuleanさんありがとうございます。

    IEの最上段のコンボボックスに表示されているURL文字列を取得したいのです。

    「IEをアクティブにしてこのURL文字列をコピーして、そのあと自作ソフトをアクティブにしてテキストボックスに貼り付ける」この動作をボタンに置き換えたいわけです。

    Azuleanさんからの最後のサンプルが参考になるようですが、初心者には非常に難しく、Hongliangさんがおっしゃる通り、小生の実力には不相応な要求をしたのかもしれません。

    もう少し皆さんのご教授を待ちたいと思います。

    2008年6月24日 10:53
  •  K16オジン さんからの引用

    IEの最上段のコンボボックスに表示されているURL文字列を取得したいのです。

    「IEをアクティブにしてこのURL文字列をコピーして、そのあと自作ソフトをアクティブにしてテキストボックスに貼り付ける」この動作をボタンに置き換えたいわけです。

    現在表示しているページのURLではなく、コンボボックスの文字列が得たいのであれば、FindWindowしてGetWindowTextするしかないかな。

    (UI Automationがこの目的に使えるかどうかは分かりませんので言及しません)

     

    もちろん、IEのその位置のウィンドウがコンボボックスである保証はありません。

    もしかしたら、エディットボックスかもしれないし、他のクラスかもしれません。それはお使いのバージョンのIEに対してSpy等を使って調べて下さい。

     

    追伸。

    具体的な手順を1から順に全て説明することは時間的に不可能です。

    それぞれのキーワードからWebサイトを検索し、自分である程度情報を集めてみてください。

    その上で分からない点についてはポイントごとに回答はできる可能性があります。

    2008年6月24日 13:43
    モデレータ
  • Azleanさん、ありがとうございます。

    2008のヘルプを検索してもFindWindowもGetWindowTextも見つかりません。

    msdnでFindwindowのサンプルが1件見つかりましたが、これをどのようにアレンジしたら良いのかさえ小生には難解で、あれこれいじくりまわしていますがうまく行きません。

    もう、そろそろ諦め時かと思っています。

    2008年6月25日 6:57
  •  K16オジン さんからの引用

    2008のヘルプを検索してもFindWindowもGetWindowTextも見つかりません。

    APIですので、Express Editionのヘルプにはないかもしれませんね。

    (Visual Basicでフィルタされているとかでも出てきません)

     

    次のKBはFindWindowやGetWindowTextを使ったサンプルとは言えるかもしれません。

    http://support.microsoft.com/kb/818361/en

     

    で、FindWindowやGetWindowTextのヘルプとかはGoogleでサイト検索すればさっくりと見つかります。

    http://www.google.com/search?num=50&hl=ja&q=FindWindow+site%3Amsdn.microsoft.com&lr=

    http://www.google.com/search?num=50&hl=ja&q=GetWindowText+site%3Amsdn.microsoft.com&lr=

    2008年6月25日 14:02
    モデレータ
  • VBレスキューさん、ありがとうございました。

    当掲示板をご覧の皆様、これ以降の内容はVBレスキューさんの回答の方へ移動してご覧になって下さい。

    当フォーラム運営者の方にもご迷惑をかけましたが、よろしくお願いします。

    2008年6月29日 4:47