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

VBなどのクライアントプログラムからWEBブラウザのURL変更

環境/言語:[Windowx XP]
分類:[.NET]

初めて質問させていただきます。
VBなどで作られたクライアントのプログラム(exeで動いているもの)でボタンを用意して、そのボタンをクリックすることで既に開いている特定のブラウザのURLを変更して別のページに遷移さすことなどできるのでしょうか?
特定のブラウザと言っているのでは、ブラウザで開いているページのタイトルからそのブラウザを特定すると言うことです。
ブラウザは特定できても違うページへ遷移させることはセキュリティ的にできないのではないか感じております。
ご存知の方がいらっしゃればご教授のほどお願いいたします
■No31955に返信(Tourさんの記事)
> 特定のブラウザと言っているのでは、ブラウザで開いているページのタイトルからそのブラウザを特定すると言うことです。
> ブラウザは特定できても違うページへ遷移させることはセキュリティ的にできないのではないか感じております。

技術的にはできるかもしれませんが、非常に大変なので考え直すことをおすすめしたいです。

ブラウザのアプリケーション、この場合は IE や FireFox, Chrome などのことですが、これらを限定しない場合、無理に近いと思います。
すべてのブラウザが同じ操作方法(API)で実現できるわけではないからです。

次に対象のブラウザがプログラムの操作からに対してどのような API を公開しているかです。
ブラウザが表示しているページやその操作を認めるような API が存在するのであれば、できるかもしれません。

最終的に API などで操作できない場合、FindWindow でウィンドウを見つける、ウィンドウの中の特定の要素を調べるなどを駆使して特定することになりますが、最近のブラウザはタブブラウザで識別が難しくなっているかもしれません。
(私は調べていないので具体的な方法は提示できかねます)


技術的にやってやれないことはないかもしれません。
ただ、泥臭くなる、ブラウザごとに違う判別方法・操作方法を実現しなければならない、バージョンによってはまた違う判別方法・操作方法を実現しなければならなくなる恐れがあるということを考えると、やめた方がよいと思います。
Azuleanさんの丁寧にありがとうございます
私の質問が悪かったのですがブラウザはIE限定でバージョンも限定できるものです
技術的にできるのであればどのような方法があるのでしょうか?
もしご存じであればご教授願います
■No31957に返信(Tourさんの記事)
> 私の質問が悪かったのですがブラウザはIE限定でバージョンも限定できるものです
> 技術的にできるのであればどのような方法があるのでしょうか?

C++ かつ COM の話題になってしまいますが、こちらのサンプルをベースに IWebBrowser2 の Navigate メソッドを呼び出せば外部から特定のサイトに飛ばすことができました。(Win8.1+IE11)
http://blogs.msdn.com/b/oldnewthing/archive/2013/06/10/10424662.aspx

COM の知識を持っていることを前提に、ここで書いてあるインターフェースを駆使すればタイトルも得られるはずです。
(LocationURL プロパティではなく、LocationName プロパティを見る)

C# や VB.NET で1から作る場合にどのように作ればお手軽かまでは調べていませんが、まずは取り急ぎ技術的な面のみお伝えすることにします。
(結構手間がかかりそうなので…)
その後、IWebBrowser2 と C# をキーワードに探したところ、
下記のサイトを見つけました。
http://d.hatena.ne.jp/unibon/20090102/p3

ここを参考に、参照設定を追加して以下のようなコードを入力すると
タイトルがとれるようになります。

Dim shell As New Shell32.ShellClass
Dim windows = CType(Shell.Windows(), SHDocVw.ShellWindows)
For Each wb As SHDocVw.WebBrowser In windows
    Console.WriteLine(wb.LocationName)
    '以下のコードを有効にするとすべてのIEがasahi.comになります。
    'wb.Navigate("http://www.asahi.com/")
Next wb
Azuleanさん、色々とありがとうございます
一度試してみます

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