WebBrowserコントロールの基本的な操作
WebBrowserコントロールの基本的な操作方法について解説します。
目次
操作を行うための前準備については以下を参考にしてください。Webページの表示
URLを指定してWebページを表示するにはnavigate
メソッドを使用します。
ただし、navigate
メソッドはページの読み込み完了を待ちませんので、
後述する読み込み完了待ちの処理をいれないと、読み込み途中のまま次の処理が行われてしまいます。
実装方法
サンプル
WebBrowser1.Navigate("https://web.biz-prog.net/") '開きたいURL
webBrowser1.Navigate("https://web.biz-prog.net/"); //開きたいURL
WebBrowser1.Navigate "https://web.biz-prog.net/" '開きたいURL
参考
読み込み待ち
navigate
メソッドでWebページを表示したり、リンクのクリックを行ったり、Submitを行った場合などは、
ページの読み込み・表示が終わるまでの待機する処理が必要です。
もし読み込みの待機処理を行わないと、ページが表示される前に次の処理を行う可能性があり、エラーとなってしまうからです。
以下の処理によりページの表示が終わるまで待機できます。
実装方法
このサンプルは、ページを開いたりリンクをクリックした時の、ページの読み込みが発生する操作後に呼び出すことで、読み込みが終わるまで待機できます。
WebBrowserが読み込み中かの判定は、WebBrowserオブジェクトのBusy
プロパティとReadyState
プロパティをチェックします。
Busy
プロパティはページの読み込みがビジー(処理中)の場合にtrueになります。
ReadyState
プロパティは現在のドキュメントの読み込み状態が取得できます。Completeになれば読み込み完了です。
While文により、IEの状態がビジーでなく、かつ読み込み状態が完了待ちでなくなるまで、ループを続けます。
DoEnventsは、ループ中にプログラムが操作できないことを避ける命令です(CPU時間を他に割り当てます)。
無限ループを防ぎたい場合はタイムアウトの処理を追加してください。
サンプル
Public Function OpenWebWait() As Boolean Try '2秒間ほど待機 System.Threading.Thread.Sleep(2000) '読み込み完了まで待つ Do While (WebBrowser1.IsBusy OrElse _ WebBrowser1.ReadyState <> WebBrowserReadyState.Complete) '無処理 System.Windows.Forms.Application.DoEvents() System.Threading.Thread.Sleep(100) Loop Return True Catch ex As Exception Return False End Try End Function
public bool OpenWebWait() { try { //2秒間ほど待機 System.Threading.Thread.Sleep(2000); //読み込み完了まで待つ while (webBrowser1.IsBusy || webBrowser1.ReadyState != WebBrowserReadyState.Complete) { //無処理 System.Windows.Forms.Application.DoEvents(); System.Threading.Thread.Sleep(100); } return true; } catch (Exception ex) { return false; } }
参考
戻る/進む/ホームページ/検索
閲覧履歴の「戻る」「進む」を行ったり、現在のユーザーのホームページや検索ページに移動します。
これら操作でもページの読み込みが発生しますので、メソッド実行後に、読み込み完了を待つ処理が必要です。(上記参照)
実装方法
サンプル
WebBrowser1.GoBack() '戻る WebBrowser1.GoForward() '進む WebBrowser1.GoHome() 'ホームページに移動 WebBrowser1.GoSearch() '既定の検索ページに移動
webBrowser1.GoBack(); //戻る webBrowser1.GoForward(); //進む webBrowser1.GoHome(); //ホームページに移動 webBrowser1.GoSearch(); //既定の検索ページに移動
WebBrowser1.GoBack '戻る WebBrowser1.GoForward '進む WebBrowser1.GoHome 'ホームページに移動 WebBrowser1.GoSearch '既定の検索ページに移動
中止/リロード
読み込みを中止したり、サイトのリロード(再読み込み)が行えます。
リロードを行った場合はサイトの読み込みが発生しますので、メソッド実行後には読み込み完了を待つ処理が必要です。
実装方法
サンプル
タイトル/URLの取得
現在表示しているサイトのタイトルとURLを取得します。
実装方法
サンプル
MsgBox(WebBrowser1.Document.Title) 'タイトルを表示する MsgBox(WebBrowser1.Document.Url) 'URLを表示する
MessageBox.Show(webBrowser1.Document.Title); //タイトルを表示する MessageBox.Show(webBrowser1.Document.Url.ToString()); //URLを表示する
MsgBox(WebBrowser1.Document.Title) 'タイトルを表示する MsgBox(WebBrowser1.Document.Url) 'URLを表示する