1.WebBrowser コントロールワンポイントテクニック集(08_Int_01) (旧、SampleNo.454) |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 / Internet Explorer 11.0 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :System.IO 参照設定:Microsoft Internet controls / 参照設定方法参照 使用コン:Button1 〜 Button16 / WebBrowser1 / Label1 トロール: このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.指定のURLを表示する |
Private buttonNo As Integer Private myURL As Uri Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '指定のURLを表示する 'WebBrowser.Url プロパティ '現在のドキュメントの場所を示す URL を取得または設定します。 WebBrowser1.Navigate("http://hanatyan.sakura.ne.jp/index.html") 'WebBrowser.Navigate メソッド 'WebBrowser コントロールに、指定された場所にあるドキュメントを読み込みます。 'Navigate メソッドは、色々な設定方法がありますので、詳しくは、MSDN をご覧下さい。 '下記設定は、指定された URL を新しいウィンドウに表示。 ' WebBrowser1.Navigate("http://hanatyan.sakura.ne.jp/", True) End Sub |
2.ナビゲーション履歴の前のページに戻る |
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 'ナビゲーション履歴の前のページに戻る 'ナビゲーション履歴に前のページがあるかどうかを示す値を取得します。 '(下記判定は、特に無くても問題ありません。) If WebBrowser1.CanGoBack Then 'ナビゲーション履歴に前のページがある場合に、WebBrowser コントロールを前のページに戻します。 WebBrowser1.GoBack() End If End Sub |
3.ナビゲーション履歴の次のページに進む |
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 'ナビゲーション履歴の次のページに進む 'ナビゲーション履歴に次のページがあるかどうかを示す値を取得します。 '(下記判定は、特に無くても問題ありません。) If WebBrowser1.CanGoForward Then 'ナビゲーション履歴に次のページがある場合に、WebBrowser コントロールを次のページに移動します。 WebBrowser1.GoForward() End If End Sub |
4.指定のURLの読み込み完了を取得(待つ)する |
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click '指定のURLの読み込み完了を取得する myURL = New Uri("http://hanatyan.sakura.ne.jp/vb2005/index.html") Button4.Enabled = False WebBrowser1.Navigate(myURL) End Sub Private Sub WebBrowser1_DocumentCompleted(sender As Object, _ e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted '指定のURL以外を除外する ' Debug.Print(e.Url.ToString) If Not TypeName(sender) = "WebBrowser" Or e.Url <> myURL Then Exit Sub End If '読み込みが完了したので、True に設定 Button4.Enabled = True End Sub |
5.現在のWebページのURLを取得する |
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click '現在のWebページのURLを取得する MessageBox.Show(WebBrowser1.Url.ToString) End Sub |
6.現在のWebページのタイトルを取得する |
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '現在のWebページのタイトルを取得する MessageBox.Show(WebBrowser1.DocumentTitle) End Sub |
7.スクリプトエラーメッセージなどのダイアログボックスを非表示にする。 |
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click 'スクリプトエラーメッセージなどのダイアログボックスを非表示にする。 '非表示で表示(スクリプトエラー が表示されるようなサイトを指定して下さい) WebBrowser1.ScriptErrorsSuppressed = True myURL = New System.Uri("https://www.sonomanma.co.jp/login.php") WebBrowser1.Navigate(myURL) '通常の状態で表示 MessageBox.Show("少し待ってから通常の状態で表示") WebBrowser1.ScriptErrorsSuppressed = False myURL = New System.Uri("https://www.sonomanma.co.jp/login.php") WebBrowser1.Navigate(myURL) End Sub |
8.ステータステキストを取得する |
Private frg8 As Boolean Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click 'ステータステキストを取得する frg8 = Not frg8 End Sub Private Sub webBrowser1_StatusTextChanged(sender As Object, e As EventArgs) Handles WebBrowser1.StatusTextChanged 'WebBrowser コントロールのステータステキストを取得する If frg8 Then Label1.Text = WebBrowser1.StatusText End If End Sub |
9.要素に割り当てられたテキストを取得 |
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click '要素に割り当てられたテキストを取得 Debug.Print(WebBrowser1.Document.Body.InnerText) '現在の要素のテキストを取得 Debug.Print(WebBrowser1.Document.Body.OuterText) End Sub |
10.要素に割り当てられたソースコードを取得 |
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click '要素に割り当てられたソースコードを取得 Debug.Print(WebBrowser1.Document.Body.InnerHtml) '現在の要素のソースコードを取得 Debug.Print(WebBrowser1.Document.Body.OuterHtml) Debug.Print(WebBrowser1.DocumentText) Using Source As New System.IO.StreamReader(WebBrowser1.DocumentStream, System.Text.Encoding.GetEncoding("shift_jis")) Debug.Print(Source.ReadToEnd()) End Using End Sub |
11.現在の印刷設定とページ設定を使用して、現在表示されているドキュメントを印刷する |
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click '現在の印刷設定とページ設定を使用して、現在表示されているドキュメントを印刷します。 WebBrowser1.Print() End Sub |
12.現在のWebページを拡大・縮小表示する |
Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click '現在のWebページを拡大・縮小表示する Dim wt As New WaitTime.Class1 WebBrowser1.Document.Body.Style &= ";Zoom:50%" wt.WaitTime(2000) WebBrowser1.Document.Body.Style &= ";Zoom:200%" wt.WaitTime(2000) WebBrowser1.Document.Body.Style &= ";Zoom:100%" wt.WaitTime(2000) End Sub |
13.現在 IE で表示中の全 Web ページを取得 |
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click 'プロジェクト→参照の追加→COM で Microsoft Internet controls を参照設定しておいてください。 Dim oSW As New SHDocVw.ShellWindows Dim oWb As SHDocVw.ShellBrowserWindow = Nothing 'IEがすでに起動中であるかを確認(起動中のエクスプローラーも含まれる) For Each oWb In oSW 'エクスプローラーはカウントから除外する If TypeName(oWb.Document) = "HTMLDocumentClass" Then Debug.Print(oWb.LocationName) Debug.Print(oWb.LocationURL) Debug.Print("----------------------------------------------------") End If Next Dim Count As Integer '解放されているか確認の為 Count = System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oWb) Debug.WriteLine(Count) '結果 0 だったら解放されている Count = System.Runtime.InteropServices.Marshal.FinalReleaseComObject(oSW) Debug.WriteLine(Count) '結果 0 だったら解放されている End Sub |
14.指定の位置を画面のトップ位置に表示する |
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click Me.WindowState = FormWindowState.Maximized myURL = New Uri("http://dobon.net/cgi-bin/vbbbs/cbbs.cgi") WebBrowser1.Navigate(myURL) End Sub Private Sub WebBrowser1_DocumentCompleted(sender As Object, _ e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted '指定のURL以外を除外する ' Debug.Print(e.Url.ToString) If Not TypeName(sender) = "WebBrowser" Or e.Url <> myURL Then Exit Sub End If '14.指定の位置を画面のトップ位置に表示する If myURL.ToString = "http://dobon.net/cgi-bin/vbbbs/cbbs.cgi" Then WebBrowser1.Document.Window.ScrollTo(0, 320) End If End Sub |
15.リンクの色を取得または設定します |
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click WebBrowser1.Visible = False If buttonNo = 15 Then buttonNo = 0 WebBrowser1.Navigate("http://hanatyan.sakura.ne.jp/ypcs/Link.htm") Else buttonNo = 15 WebBrowser1.Navigate("http://hanatyan.sakura.ne.jp/ypcs/Link.htm") End If End Sub Private Sub WebBrowser1_DocumentCompleted(sender As Object, _ e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted If buttonNo = 15 Then WebBrowser1.Document.LinkColor = Color.Green WebBrowser1.Document.ActiveLinkColor = Color.Pink WebBrowser1.Document.VisitedLinkColor = Color.Yellow ' hover(に対応する設定が見当たらない) Else Debug.Print(WebBrowser1.Document.LinkColor.Name) Debug.Print(WebBrowser1.Document.ActiveLinkColor.Name) Debug.Print(WebBrowser1.Document.VisitedLinkColor.Name) End If WebBrowser1.Visible = True End Sub |
16.スタイルシートを読み込んで設定する |
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click WebBrowser1.Visible = False If buttonNo = 16 Then buttonNo = 0 WebBrowser1.Navigate("http://hanatyan.sakura.ne.jp/ypcs/Link.htm") Else buttonNo = 16 WebBrowser1.Navigate("http://hanatyan.sakura.ne.jp/ypcs/Link.htm") End If End Sub Private Sub WebBrowser1_DocumentCompleted(sender As Object, _ e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted If buttonNo = 16 Then 'LinkStyle.css を読込んで設定する場合 Dim cssfilename As String = "..\..\..\data" & "\LinkStyle.css" Dim css As String = "<style type='text/css'>" & System.IO.File.ReadAllText(cssfilename) & "</style>" WebBrowser1.Document.Body.InnerHtml &= css End If WebBrowser1.Visible = True End Sub |
17. |
18.起動時の設定及び上記プログラムの共通部分 |
下記コードは、上記コード中のコードをまとめて書いたもので重複しておりますのでご注意ください。 Private buttonNo As Integer Private myURL As Uri Private frg8 As Boolean Private Sub WebBrowser1_DocumentCompleted(sender As Object, _ e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted If buttonNo = 15 Then WebBrowser1.Document.LinkColor = Color.Green WebBrowser1.Document.ActiveLinkColor = Color.Pink WebBrowser1.Document.VisitedLinkColor = Color.Yellow ' hover(に対応する設定が見当たらない) Else Debug.Print(WebBrowser1.Document.LinkColor.Name) Debug.Print(WebBrowser1.Document.ActiveLinkColor.Name) Debug.Print(WebBrowser1.Document.VisitedLinkColor.Name) End If If buttonNo = 16 Then 'LinkStyle.css を読込んで設定する場合 Dim cssfilename As String = "..\..\..\data" & "\LinkStyle.css" Dim css As String = "<style type='text/css'>" & System.IO.File.ReadAllText(cssfilename) & "</style>" WebBrowser1.Document.Body.InnerHtml &= css End If WebBrowser1.Visible = True '指定のURL以外を除外する ' Debug.Print(e.Url.ToString) If Not TypeName(sender) = "WebBrowser" Or e.Url <> myURL Then Exit Sub End If '読み込みが完了したので、True に設定 Button4.Enabled = True '14.指定の位置を画面のトップ位置に表示する If myURL.ToString = "http://dobon.net/cgi-bin/vbbbs/cbbs.cgi" Then WebBrowser1.Document.Window.ScrollTo(0, 320) End If End Sub |
検索キーワード及びサンプルコードの別名(機能名) |
1.指定のURLを表示する 2.指定された URL を新しいウィンドウに表示する 3.ナビゲーション履歴に前のページがあるかどうかを取得する 4.ナビゲーション履歴の前のページに戻る 5.ナビゲーション履歴に次のページがあるかどうかを取得する 6.ナビゲーション履歴の次のページに進む 7.指定のURLの読み込み完了を取得(待つ)する 8.現在のWebページのURLを取得する 9.現在のWebページのタイトルを取得する 10.スクリプトエラーメッセージなどのダイアログボックスを非表示にする。 11.ステータス テキストを取得する 12.要素に割り当てられたテキストを取得 13.要素に割り当てられたソースコードを取得 14.現在の印刷設定とページ設定を使用して、現在表示されているドキュメントを印刷する。 15.現在のWebページを拡大・縮小表示する 16.現在 IE で表示中の全 Web ページを取得 スタイルシートを読み込んで設定する リンクの色を取得 リンクの色を設定する 指定の位置を画面のトップ位置に表示する |