応用
新しいタブでサイトを開く(InternetExplorer7以降)
InternetExplorerでのページの表示を新しいタブで行う方法です。(バージョン7以降)
Navigateメソッドの第二引数に「&H800」または「&H1000」を指定することで新しいタブでページを表示します。
「&H800」を指定すると、今表示しているタブから新しいタブに切り替えてページを表示します。
「&H1000」を指定すると、今表示しているタブはそのままに、別に新しいタブを作成してページを表示します。
タブを指定してページを表示させたい場合は、新しいタブでページを開いた際にオブジェクトを保持しておき、
そのオブジェクトに対して以降Navigateや操作をすることで行えます。
Public Class Form1 Private Const NAV_OPEN_IN_NEW_TAB As Integer = &H800 Private Const NAV_OPEN_IN_BACKGROUND_TAB As Integer = &H1000 Private WithEvents objIE As New SHDocVw.InternetExplorer() Private ieList As New List(Of SHDocVw.InternetExplorer) Private shell As Object Private Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click objIE.Navigate("https://web.biz-prog.net/index.html") objIE.Visible = True shell = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application")) ieList.Add(shell.Windows.Item(shell.Windows.Count - 1)) End Sub 'タブを追加してページを表示する。追加したタブに切り替える。 Private Sub button2_Click(sender As Object, e As EventArgs) Handles button2.Click objIE.Navigate("https://web.biz-prog.net/test/testpage.html", NAV_OPEN_IN_NEW_TAB) System.Threading.Thread.Sleep(3000) '本来は表示が完了するまで待ってからリストに追加する。でないと正しいオブジェクトを取得できない ieList.Add(shell.Windows.Item(shell.Windows.Count - 1)) End Sub 'タブを追加してページを表示する。タブは切り替えない Private Sub button3_Click(sender As Object, e As EventArgs) Handles button3.Click objIE.Navigate("https://web.biz-prog.net/test/testpage.html", NAV_OPEN_IN_BACKGROUND_TAB) System.Threading.Thread.Sleep(3000) '本来は表示が完了するまで待ってからリストに追加する。でないと正しいオブジェクトを取得できない ieList.Add(shell.Windows.Item(shell.Windows.Count - 1)) End Sub '最後に開いたタブで別のページを表示する Private Sub button4_Click(sender As Object, e As EventArgs) Handles button4.Click ieList(ieList.Count - 1).Navigate("https://www.google.co.jp/") End Sub End Class
public partial class Form1 : Form { private static int NAV_OPEN_IN_NEW_TAB = 0x800; private static int NAV_OPEN_IN_BACKGROUND_TAB = 0x1000; private SHDocVw.InternetExplorer objIE = new SHDocVw.InternetExplorer(); private List<SHDocVw.InternetExplorer> ieList = new List<SHDocVw.InternetExplorer>(); dynamic shell; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { objIE.Navigate("https://web.biz-prog.net/index.html"); objIE.Visible = true; shell = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application")); ieList.Add(shell.Windows.Item(shell.Windows.Count - 1)); } //タブを追加してページを表示する。追加したタブに切り替える。 private void button2_Click(object sender, EventArgs e) { objIE.Navigate("https://web.biz-prog.net/test/testpage.html", NAV_OPEN_IN_NEW_TAB); System.Threading.Thread.Sleep(3000); //本来は表示が完了するまで待ってからリストに追加する。でないと正しいオブジェクトを取得できない ieList.Add(shell.Windows.Item(shell.Windows.Count - 1)); } //タブを追加してページを表示する。タブは切り替えない。 private void button3_Click(object sender, EventArgs e) { objIE.Navigate("https://web.biz-prog.net/test/testpage.html", NAV_OPEN_IN_BACKGROUND_TAB); System.Threading.Thread.Sleep(3000); //本来は表示が完了するまで待ってからリストに追加する。でないと正しいオブジェクトを取得できない ieList.Add(shell.Windows.Item(shell.Windows.Count - 1)); } //最後に開いたタブで別のページを表示する private void button4_Click(object sender, EventArgs e) { ieList[ieList.Count - 1].Navigate("https://www.google.co.jp/"); } }
Sub sample() '定数定義 Const IE_MAX As Integer = 5 Const NAV_OPEN_IN_NEW_TAB As Long = &H800 Const NAV_OPEN_IN_BACKGROUND_TAB As Long = &H1000 '変数定義 Dim objShell As Object Dim objIE As SHDocVw.InternetExplorer Dim count As Integer Dim ieList(4) As SHDocVw.InternetExplorer Dim i As Long 'オブジェクト設定 Set objShell = CreateObject("Shell.Application") Set objIE = CreateObject("InternetExplorer.Application") 'IE起動&タブを5つまで開く objIE.Visible = True '可視 While count < IE_MAX If count = 0 Then objIE.Navigate "about:blank" Else objIE.Navigate "about:blank", NAV_OPEN_IN_BACKGROUND_TAB End If For i = 0 To 100000 DoEvents 'ある程度の時間Sleepしないと、開く時に異なるタブで開けない Next Set ieList(count) = objShell.Windows.Item(objShell.Windows.count - 1) count = count + 1 Wend DoEvents 'タブ1と2でサイトを表示 ieList(0).Navigate "https://www.google.co.jp/" ieList(1).Navigate "https://www.yahoo.co.jp/" End Sub