トップ回答者
開いているブラウザからURLを取得するには?

質問
-
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を取得できるようにしたいと思っています。
どうかよろしくお願いします。
回答
すべての返信
-
そもそも、「開いているブラウザ」ってなんでしょう?
自分のフォーム内で使用している WebBrowser コントロール? それともほかのプロセスのブラウザですか?
ほかのプロセスのブラウザならそれはそれで様々あります。IE や Firefox、あるいは Sleipnir 。それぞれバージョンの違いもあるでしょうし、タブブラウザなら開いてる URL なんて複数になります。
K16オジン さんからの引用 サンプルは他にも幾つか見つけたのですが、すごく複雑でURLというキーワードさえ含まれず超初心者には内容が理解出来ず、上記を修正しただけでURLを取得できるようにしたいと思っています。
情報が古いって可能性もありますが、大抵の場合は必要だからそれだけ複雑なコードになるのです。
内容が理解できないのなら諦めるしかないです。
掲示板などで理解の手助けを得ることはできるかもしれません。
-
最初に提示されたコードは自分のフォーム内でWebBrowser コントロールを使ってWEBを表示した場合だと思います。
http://www.microsoft.com/japan/msdn/thisweek/300x10/Phase3/WebBrowser/vb.aspx
予想ですが、「あるソフト」はブラウザのURLが表示されるコンボボックスのハンドルをFindWindowなどで探してURLを取得しているのではないでしょうか。
FindWindow(win32 API)の代わりになる.NETクラスライブラリがあるかは分かりません。
-
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
現状で使えるコードかまでは見ていません。
-
-
K16オジン さんからの引用 IEの最上段のコンボボックスに表示されているURL文字列を取得したいのです。
「IEをアクティブにしてこのURL文字列をコピーして、そのあと自作ソフトをアクティブにしてテキストボックスに貼り付ける」この動作をボタンに置き換えたいわけです。
現在表示しているページのURLではなく、コンボボックスの文字列が得たいのであれば、FindWindowしてGetWindowTextするしかないかな。
(UI Automationがこの目的に使えるかどうかは分かりませんので言及しません)
もちろん、IEのその位置のウィンドウがコンボボックスである保証はありません。
もしかしたら、エディットボックスかもしれないし、他のクラスかもしれません。それはお使いのバージョンのIEに対してSpy等を使って調べて下さい。
追伸。
具体的な手順を1から順に全て説明することは時間的に不可能です。
それぞれのキーワードからWebサイトを検索し、自分である程度情報を集めてみてください。
その上で分からない点についてはポイントごとに回答はできる可能性があります。
-
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=
-