この資料の内容
概要
WebBrowser コントロールをホストする Visual Basic .NET アプリケーションは、スクリプトによって生成されるwindow.openの呼び出しをキャッチするNewWindow2イベントを処理できます。ただし、アプリケーションが web ブラウザー ホストに正しくウィンドウをサイズ変更できるように、 window.openの機能の引数に渡される、幅と高さの値を取得する方法はすぐにわかることはできません。この資料では、WebBrowser コントロールの高さと幅を取得する方法と、それに応じて、フォームのサイズを変更する方法について説明します。
必要条件
必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は、次のとおりです。
-
Microsoft Visual Studio .NET
-
Microsoft Internet Explorer 5.5 Service Pack 2 またはそれ以降
サンプルを作成します。
このセクションでは、Visual Basic .NET アプリケーションで WebBrowser コントロールをホストする方法、WebBrowser コントロールのNewWindow2イベントを処理する方法、およびWindowSetWidthとWindowSetHeightイベントを処理する方法について説明します。アプリケーションのサイズを変更します。
-
次のように、Visual Basic で新しい Windows アプリケーションを作成します。
-
Visual Studio .NET を起動します。
-
[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
-
[プロジェクトの種類のVisual Basic プロジェクト] をクリックします。[テンプレート] には、 Windows アプリケーションをクリックします。
-
-
ツールボックスで、[全般] をクリックを選択し、ツールボックスを右クリックし、[ツールボックスのカスタマイズ] をクリックします。
-
[ COM コンポーネント] タブで、 Microsoft の Web ブラウザー ] チェック ボックスをオンし、し、[ OK] をクリックします。
-
[ツールボックス] で、[エクスプ ローラー] ウィンドウでをダブルクリックします。
-
ボタンコントロールおよびテキスト ボックスコントロールをフォームに追加します。
-
[コード] ウィンドウで、ボタンのonClickイベントの実装を表示するのにはボタンをダブルクリックし、次のコードを追加します。
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub
このコードでは、テキスト ボックスで指定した URL への参照を行うことができます。
-
NewWindow2のハンドラー関数を記述する次のコードを追加します。
Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True End Sub
-
WindowSetHeightのためのハンドラー関数を記述する次のコードを追加します。
Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub
-
WindowSetWidthのためのハンドラー関数を記述する次のコードを追加します。
Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End Sub
完全なコード サンプル
Public Class Form1 Inherits System.Windows.Forms.Form#Region " Windows Form Designer generated code " 'Omitted#End Region Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click AxWebBrowser1.Navigate(TextBox1.Text) End Sub Private Sub AxWebBrowser1_NewWindow2(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_NewWindow2Event) _ Handles AxWebBrowser1.NewWindow2 'MessageBox.Show(AxWebBrowser1.Height & ":" & AxWebBrowser1.Width) 'MessageBox.Show(doc.body.innerHTML) Dim frmWB As Form1 frmWB = New Form1() frmWB.AxWebBrowser1.RegisterAsBrowser = True 'frmWB.AxWebBrowser1.Navigate2("about:blank") e.ppDisp = frmWB.AxWebBrowser1.Application frmWB.Visible = True 'MessageBox.Show(frmWB.AxWebBrowser1.Height & ":" & frmWB.AxWebBrowser1.Width) End Sub Private Sub AxWebBrowser1_WindowSetHeight(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetHeightEvent) _ Handles AxWebBrowser1.WindowSetHeight 'MessageBox.Show("In SetHeight" & Me.Height & ":" & e.height) Dim heightDiff As Integer heightDiff = Me.Height - Me.AxWebBrowser1.Height Me.Height = heightDiff + e.height End Sub Private Sub AxWebBrowser1_WindowSetWidth(ByVal sender As Object, _ ByVal e As AxSHDocVw.DWebBrowserEvents2_WindowSetWidthEvent) _ Handles AxWebBrowser1.WindowSetWidth 'MessageBox.Show("In SetWidth" & Me.Width & ":" & e.width) Dim widthDiff As Integer widthDiff = Me.Width - Me.AxWebBrowser1.Width Me.Width = widthDiff + e.width End SubEnd Class
それが動作することを確認します。
-
アプリケーションをビルドします。
-
メモ帳を開きます。Test.htm をという名前の新しいファイルを作成し、次のコードを追加します。
<HTML><HEAD><META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0"><TITLE></TITLE><script>function openWin(){var win;win = window.open("http://www.microsoft.com","blah","width=600, height=600");}</script></HEAD><BODY><button onClick=openWin()>Open Window</button></BODY></HTML>
-
Test.htm を Web サーバー上に保存します。
-
アプリケーションを実行します。
-
Test.htm ページを参照し、ボタンをクリックします。アプリケーションの新しいインスタンスに、Microsoft の企業 Web サイトを開くことに注意してください。Window.openの呼び出しで渡された機能により、フォームをサイズ変更します。
関連情報
詳細については、マイクロソフト サポート技術情報の記事を表示するのには、以下の記事番号をクリックします。
311284する方法: Visual Basic .NET アプリケーションでドキュメント イベントを処理します。
259963 HOWTO: 幅を取得し、Visual C++ WebBrowser ホストの Window.open の内側に指定された高さメソッドと同様に、WebBrowser コントロールの詳細については、プロパティ、およびそれを公開するイベントに、次のマイクロソフト Web サイトを参照してください。
Visual Basic の開発者http://msdn2.microsoft.com/en-us/library/Aa752043.aspxの WebBrowser コントロールの場合: 参照Microsoft Internet Explorer の Web ベースのソリューションを開発する方法の詳細については、次のマイクロソフト Web サイトを参照してください。
http://msdn.microsoft.com/ie/ http://support.microsoft.com/iep