基本操作
ここでは、InternetExplorerやWebコントロールの基本的な操作方法について解説します。
- Webページの表示
- 読み込み待ち
- 戻る/進む/ホームページ/検索
- 中止/リロード
- タイトル/URLの取得
- InternetExplorerの表示/非表示
- InternetExplorerの位置/サイズ
- InternetExplorerのバー操作
- InternetExplorerの終了処理
Webページの表示
URLを指定してWebページを表示するには、navigateメソッドを使用します。
ただし、navigateメソッドはページの読み込み完了を待ちませんので、
後述する読み込み完了待ちの処理をいれないと、読み込み途中のまま次の処理が行われてしまいます。
InternetExplorer操作時
navigateメソッドには引数が複数あり、
・POSTデータを送信したりヘッダーを指定して送信する
・新しいタブで表示する
を行うことができます。
サンプル
objIE.Navigate("https://web.biz-prog.net/") '開きたいURL
objIE.Navigate("https://web.biz-prog.net/"); //開きたいURL
objIE.Navigate "https://web.biz-prog.net/" '開きたいURL
参考
WebBrowserコントロール使用時
サンプル
WebBrowser1.Navigate("https://web.biz-prog.net/") '開きたいURL
webBrowser1.Navigate("https://web.biz-prog.net/"); //開きたいURL
WebBrowser1.Navigate "https://web.biz-prog.net/" '開きたいURL
参考
WebView2コントロール使用時
サンプル
読み込み待ち
navigateメソッドでWebページを表示したり、リンクのクリックを行ったり、Submitを行った場合などは、ページの読み込み・表示が終わるまでの待機する処理が必要です。
以下の処理によりページの表示が終わるまで待機できます。
InternetExplorer操作時
InternetExplorerが読み込み中かの判定は、InternetExplorerオブジェクトのBusyプロパティとReadyStateプロパティをチェックします。
Busyプロパティはページの読み込みがビジー(処理中)の場合にtrueになります。
ReadyStateプロパティは現在のドキュメントの読み込み状態が取得できます。Completeになれば読み込み完了です。
While文により、IEの状態がビジーでなく、かつ読み込み状態が完了待ちでなくなるまで、ループを続けます。
DoEnventsは、ループ中にプログラムが操作できないことを避ける命令です(CPU時間を他に割り当てます)。
無限ループを防ぎたい場合はタイムアウトの処理を追加してください。
Public Function OpenWebWait() As Boolean Try '読み込み完了まで待つ Do While (objIE.Busy OrElse _ objIE.ReadyState <> SHDocVw.tagREADYSTATE.READYSTATE_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 { //読み込み完了まで待つ while (objIE.Busy || objIE.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) { //無処理 System.Windows.Forms.Application.DoEvents(); System.Threading.Thread.Sleep(100); } return true; } catch (Exception ex) { return false; } }
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
Dim timeout As Date = Now.AddMinutes(30) '30秒でタイムアウト Dim flgStop As Boolean '停止フラグ。画面でボタン押下時にこのフラグをTrueにすれば止まる Do While (・・・) ・・・ If Now > timeout OrElse flgStop Then objIE.Stop() Exit Do End If Loop
WebBrowserコントロール使用時
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
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; }
参考
WebView2コントロール使用時
こちらを参考にしてください。
戻る/進む/ホームページ/検索
閲覧履歴の「戻る」「進む」を行ったり、現在のユーザーのホームページや検索ページに移動します。
これら操作でもページの読み込みが発生しますので、メソッド実行後に、読み込み完了を待つ処理が必要です。(上記参照)
InternetExplorer操作時
objIE.GoBack() '戻る objIE.GoForward() '進む objIE.GoHome() 'ホームページに移動 objIE.GoSearch() '既定の検索ページに移動
objIE.GoBack(); //戻る objIE.GoForward(); //進む objIE.GoHome(); //ホームページに移動 objIE.GoSearch(); //既定の検索ページに移動
objIE.GoBack '戻る objIE.GoForward '進む objIE.GoHome 'ホームページに移動 objIE.GoSearch '既定の検索ページに移動
WebBrowserコントロール使用時
WebBrowser1.GoBack() '戻る WebBrowser1.GoForward() '進む WebBrowser1.GoHome() 'ホームページに移動 WebBrowser1.GoSearch() '既定の検索ページに移動
webBrowser1.GoBack(); //戻る webBrowser1.GoForward(); //進む webBrowser1.GoHome(); //ホームページに移動 webBrowser1.GoSearch(); //既定の検索ページに移動
WebBrowser1.GoBack '戻る WebBrowser1.GoForward '進む WebBrowser1.GoHome 'ホームページに移動 WebBrowser1.GoSearch '既定の検索ページに移動
WebView2コントロール使用時
'戻る If WebView2.CanGoBack Then WebView2.GoBack() End If '進む If WebView2.CanGoForward Then WebView2.GoForward() End If
//戻る if (webView2.CanGoBack) { webView2.GoBack(); } //進む if (webView2.CanGoForward) { webView2.GoForward(); }
中止/リロード
読み込みを中止したり、サイトのリロード(再読み込み)が行えます。
リロードを行った場合はサイトの読み込みが発生しますので、メソッド実行後には読み込み完了を待つ処理が必要です。
InternetExplorer操作時
objIE.Stop() '読み込み中止 objIE.Refresh() '再読み込み
objIE.Stop(); //読み込み中止 objIE.Refresh(); //再読み込み
objIE.Stop '読み込み中止 objIE.Refresh '再読み込み
WebBrowserコントロール使用時
WebBrowser1.Stop() '読み込み中止 WebBrowser1.Refresh() '再読み込み
webBrowser1.Stop(); //読み込み中止 webBrowser1.Refresh(); //再読み込み
WebBrowser1.Stop '読み込み中止 WebBrowser1.Refresh '再読み込み
WebView2コントロール使用時
タイトル/URLの取得
現在表示しているサイトのタイトルとURLを取得します。
InternetExplorer操作時
MsgBox(objIE.Document.Title) 'タイトルを表示する MsgBox(objIE.Document.Url) 'URLを表示する
MessageBox.Show(objIE.Document.Title); //タイトルを表示する MessageBox.Show(objIE.Document.Url); //URLを表示する
MsgBox(objIE.Document.Title) 'タイトルを表示する MsgBox(objIE.Document.Url) 'URLを表示する
WebBrowserコントロール使用時
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を表示する
WebView2コントロール使用時
InternetExplorerの表示/非表示
起動しているInternetExplorerの表示/非表示を設定します。
InternetExplorerのVisibleプロパティにTrueを設定するとIEが表示されます。
FalseにするとInternetExplorerの画面が消えますが、見えないだけで実際は動作しており、DOM操作を行えます。
プログラムでInternetExplorerを起動時はFalseになっているので、まずはTrueに設定しないと何も見えないので注意です。
サンプル
InternetExplorerの位置/サイズ
起動しているIEの位置・サイズを設定/参照します。
サンプル
Debug.WriteLine(objIE.Top) 'X座標 Debug.WriteLine(objIE.Left) 'Y座標 Debug.WriteLine(objIE.Width) '幅 Debug.WriteLine(objIE.Height) '高さ
Console.WriteLine(objIE.Top); //X座標 Console.WriteLine(objIE.Left); //Y座標 Console.WriteLine(objIE.Width); //幅 Console.WriteLine(objIE.Height); //高さ
Debug.Print objIE.Top 'X座標 Debug.Print objIE.Left 'Y座標 Debug.Print objIE.Width '幅 Debug.Print objIE.Height '高さ
InternetExplorerのバー操作
- Statusbar:ステータスバーの表示有無を設定/参照します。
- StatusText:ステータスバーに表示するテキストを設定/参照します。
- Toolbar:ツールバーの表示有無を設定/参照します。
- AddressBar:アドレスバーの表示有無を設定/参照します。
サンプル
objIE.AddressBar = False 'アドレスバー objIE.MenuBar = False 'メニューバー objIE.Toolbar = False 'ツールバー objIE.StatusBar = False 'ステータスバー objIE.StatusText = "テキスト" 'ステータステキスト Debug.WriteLine(objIE.StatusText)
objIE.AddressBar = False; //アドレスバー objIE.MenuBar = False; //メニューバー objIE.Toolbar = False; //ツールバー objIE.StatusBar = False; //ステータスバー objIE.StatusText = "テキスト"; //ステータステキスト Console.WriteLine(objIE.StatusText);
objIE.AddressBar = False 'アドレスバー objIE.MenuBar = False 'メニューバー objIE.Toolbar = False 'ツールバー objIE.StatusBar = False 'ステータスバー
InternetExplorerの終了処理
InternetExplorerを起動後、操作するアプリケーションを終了させてもInternetExplorerは終了せずに残ります。
アプリケーションの終了時にInternetExplorerも閉じるには、InternetExplorerに終了を指示する必要があります。