DOBON.NET DOBON.NETプログラミング掲示板過去ログ

vb.net2008からfirefoxやchromeからURLを取得

環境/言語:[vb.net(windows 7)]
分類:[.NET]

vb.net2008からfirefoxやchromeで開かれているサイトのURLを取得する方法を探しています。IEに関しては多くの情報があり、できたのですが他のブラウザでの方法が見つかりません。わかる方がいましたら教えてください。
SPY++で見れば即、解るかと。

chromeなら・・・
chromeを起動し、そのメインウィンドウであるクラス『Chrome_WidgetWin_1』の
子ウィンドウのクラス『Chrome_OmniboxView』を探せば、そのキャプションが
URLとして取得できます。

※ あくまでURLを取るだけです。

以上。参考まで
■No31206に返信(tomさんの記事)
> vb.net2008からfirefoxやchromeで開かれているサイトのURLを取得する方法を探しています。
> IEに関しては多くの情報があり、できたのですが

IE はそういった操作可能なインターフェースを公開し、.NET からも扱いやすく作っているからですね。


> 他のブラウザでの方法が見つかりません。

他のブラウザーもそういったインターフェースを公開しているのであれば可能ですが、逆に公開されていなければ実現できません。インターフェースが公開されていない場合はウィンドウを探し出して特定するといった不確実かつ、実装依存になりますので、過去のバージョンや将来のバージョンではうまく動かないこともあります。

まずは、ターゲットとするブラウザーを決めて、そのブラウザーが外部操作を認めるようなインターフェース、SDK などを公開しているかを調べてください。
(存在しない可能性も考慮してくださいね)
■No31207に返信(オショウさんの記事)
> ■No31206に返信(tomさんの記事)
返信ありがとうございます。
現在、外部のブラウザの制御について調べ始めたのですが、
>chromeを起動し、そのメインウィンドウであるクラス『Chrome_WidgetWin_1』の
子ウィンドウのクラス『Chrome_OmniboxView』を探せば、そのキャプションが
URLとして取得できます。
という部分をvb.netでどのように記述したらよいかがわかりません。
' Explorer という名前のプロセスをすべて取得する
Dim hProcesses As System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("Chrome")
Dim stPrompt As String = String.Empty
' 取得できたプロセスからプロセス ID を取得する
For Each hProcess As System.Diagnostics.Process In hProcesses
MessageBox.Show(hProcess.MainWindowTitle.ToString)
Next hProcess
↑のようにしたら、サイト名の取得はできました。

何度もすみませんが、分かりましたら教えてください。
> という部分をvb.netでどのように記述したらよいかがわかりません。

  Win32 API で、
  EnumWindows, FindWindow, FindWindowEx
  を調べてみて下さい。
  URLであるテキスト文字列を取得するのは、GetWindowTextで取得
  でいるかは、未確認です。

  それより・・・
  SPY++ 使って、ご自身でメインウィンドウとそのクラス名
  子ウィンドウとそのクラス名を確認された方が、より理解しやす
  いと思いますが。

以上。
■No31210に返信(オショウさんの記事)
>SPY++を使って調べて行こうと思います。
やはり、IEのように容易な方法を探そうとするのがそもそも間違いですね。教えてもらったことを参考に進めていこうと思います。
ありがとうございました
■No31212に返信(tomさんの記事)
> ■No31210に返信(オショウさんの記事)
> >SPY++を使って調べて行こうと思います。
> やはり、IEのように容易な方法を探そうとするのがそもそも間違いですね。教えてもらったことを参考に進めていこうと思います。
> ありがとうございました
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板