VisualBasic2005で勉強中の者です。WebBrowserが新しいウィンドウを開こうとする時(Target=New)、それを新しいウィンドウのかわりにそのWebBrowser自身で開きたいのですが、ネットで調べるうちVB2005にはNewWindow2イベントが無いのでかなり難しいという結論に達しました。つきましては、このような機能を実現したコードをご提示頂けませんでしょうか。なお、http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserNewWindow2Event.htm は参照済みなのですが、複雑すぎて私の理解の範囲をこえていました…

回答の条件
  • 1人5回まで
  • 登録:2006/08/01 14:16:49
  • 終了:2006/08/01 19:58:07

ベストアンサー

id:KirakiraHikaru No.1

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/01 17:04:22

ポイント100pt

私も読み解いた訳ではないので意味については詳しく解説できないのですが、

下記のようにすると作成中のアプリケーションに実装できるかと思います。


「VB2005のWebBrowserコントロールにNewWindow2イベントを拡張する」

http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserNewW...

のソースコード部分を以下サンプルコードとします。


1.プロジェクト内にクラスを追加

 ファイル名:ExWebBrowser.vb

 ファイル内容:サンプルコードをコピーして張り付ける。

 そのうち、Form1クラス(Public Class Form1から直近のEnd Classまで)を削除する。

 さらに「Class ExWebBrowser」を「Public Class ExWebBrowser」に変更。

2.ツールボックスに追加されたExWebBrowserをFormに配置(ExWebBrowser1)

3.サンプルコードのWebBrowser_NewWindow2関数をFormに追加

 関数内の「'新しいウィンドウが開くのを抑制」の下の2行のみ残し、それまでのコードは削除

4.FormのLoadイベントに下記のコードを追加

 AddHandler ExWebBrowser1.NewWindow2, AddressOf WebBrowser_NewWindow2

id:crashtruck

ご解答ありがとうございました。手順3を実行後、下記の2つのエラーが出ます。(1)'Application' は 'System.Windows.Forms.WebBrowser' のメンバではありません。 (2)'RegisterAsBrowser' は 'System.Windows.Forms.WebBrowser' のメンバではありません。 どうすればよいのでしょう? ぜひろよしくお願い申し上げます。

2006/08/01 18:05:45

その他の回答(2件)

id:KirakiraHikaru No.1

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/01 17:04:22ここでベストアンサー

ポイント100pt

私も読み解いた訳ではないので意味については詳しく解説できないのですが、

下記のようにすると作成中のアプリケーションに実装できるかと思います。


「VB2005のWebBrowserコントロールにNewWindow2イベントを拡張する」

http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserNewW...

のソースコード部分を以下サンプルコードとします。


1.プロジェクト内にクラスを追加

 ファイル名:ExWebBrowser.vb

 ファイル内容:サンプルコードをコピーして張り付ける。

 そのうち、Form1クラス(Public Class Form1から直近のEnd Classまで)を削除する。

 さらに「Class ExWebBrowser」を「Public Class ExWebBrowser」に変更。

2.ツールボックスに追加されたExWebBrowserをFormに配置(ExWebBrowser1)

3.サンプルコードのWebBrowser_NewWindow2関数をFormに追加

 関数内の「'新しいウィンドウが開くのを抑制」の下の2行のみ残し、それまでのコードは削除

4.FormのLoadイベントに下記のコードを追加

 AddHandler ExWebBrowser1.NewWindow2, AddressOf WebBrowser_NewWindow2

id:crashtruck

ご解答ありがとうございました。手順3を実行後、下記の2つのエラーが出ます。(1)'Application' は 'System.Windows.Forms.WebBrowser' のメンバではありません。 (2)'RegisterAsBrowser' は 'System.Windows.Forms.WebBrowser' のメンバではありません。 どうすればよいのでしょう? ぜひろよしくお願い申し上げます。

2006/08/01 18:05:45
id:KirakiraHikaru No.2

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/01 18:18:12

ポイント100pt

あ、ごめんなさい、

手順2でExWebBrowserの名前がExWebBrowser1になっていると思いますので、

手順3の関数の中身は下記のようにしてください。

e.ppDisp = Me.ExWebBrowser1.Application
Me.ExWebBrowser1.RegisterAsBrowser = True
id:crashtruck

ありがとうございます。できました! またぜひよろしくお願い申し上げます。…と思ったのですが、再度同じことをしてみると、2の段階でツールボックスにExWebBrowserが追加されません。何度もやり直し、先ほどと全く同じようにしているつもりなのですが。なぜでしょうか(泣)

2006/08/01 19:33:11
id:KirakiraHikaru No.3

KirakiraHikaru回答回数354ベストアンサー獲得回数682006/08/01 19:44:51

ポイント100pt

?なんででしょうか?

考えられることととしては、

・手順1のPublicにするのを忘れている

・ファイルを変更した後、ファイルを上書き保存していない

・Formがあるプロジェクトと別のプロジェクトにExWebBrowserを作成している

・リビルドしてみる

くらいです。

id:crashtruck

ありがとうございます、リビルドしたら現れました。初歩的なミスだったのでしょうか。とにかく、何度もありがとうございました。またよろしくお願いいたします!

2006/08/01 19:54:58
  • id:KirakiraHikaru
    たくさんのポイントとイルカくんをありがとうございます。(*'u'*)
    たしか、コントロールを作成するとツールボックスに勝手に現れるようになったのが2005からで、
    それまでは自分でツールボックスに登録していたと思います。
    新しい機能なので何かの拍子で登録されなかったのかもしれませんね。
    何かの拍子で上手くいかなくなった場合は、リビルドやクリーンを試してみると、
    上手くいくことがあるので困ったときは是非試してみてください。
  • id:crashtruck
    そうしてみます。このたびは色々お世話になりまして。また是非ご助力をお願いいたします。
  • id:halohalolin
    随分前の記事について横槍ですみません。

    VisualBasic2010(VB2010)では、KirakiraHikaruさんのやり方では
    「新しいInternetExplorerそのもののウィンドウが開くのを抑制」は適応されます。
    しかし「WebBrowserを含むフォーム自身」は開けられませんでした。

    ですので、私はベースはKirakiraHikaruさんのやり方ですが、3番について
    WebBrowser_NewWindow2の中身について以下のようにしました。

    Dim frmBrowser2 = New Form1
    frmBrowser2.Show()

    '新しいウィンドウが開くのを抑制
    e.ppDisp = frmBrowser2.ExWebBrowser1.Application
    frmBrowser2.ExWebBrowser1.RegisterAsBrowser = True

    自分のところではうまく行かず悩んだので、忘れた時のメモとして記載させて頂きます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません