2017-05-28 88 views
0

我需要強制我的應用程序打開幾個鏈接(IE11中有幾個按鈕 - 一個按鈕下的鏈接)(不管它是否設置爲默認瀏覽器或不)。vb.net在新的IE11選項卡(而不是窗口)中打開鏈接

我試過多種方法,但結果總是相同的像:

的Process.Start( 「IEXPLORE.EXE」,地址)

它完美的Firefox或Chrome,但對於IE - 它總是爲每個鏈接打開一個新窗口。無論IE已經打開或沒有。

幾年前,我寫了IE7的我猜的工作類似的事情...:

進口SHDOCVW

Dim internetExplorerInstances As New ShellWindows() 
Dim foundIE As Boolean = False 

       foundIE = False 
       For Each ie As InternetExplorer In internetExplorerInstances 
        If ie.Name = "internet explorer" Then 
         ie.Navigate(address, &H800) 
         foundIE = True 
         Exit For 
        End If 
       Next 
       If Not foundIE Then 
        With oPro 
         .StartInfo.UseShellExecute = True 
         .StartInfo.Arguments = address 
         .StartInfo.FileName = "iexplore" 
         .Start() 
        End With 
       End If 

但今天,隨着IE 11不工作....我意味着它仍然在新窗口中打開URL。

你有什麼想法如何以編程方式迫使IE11在新標籤中打開鏈接,而不是在新窗口中?

回答

1

一般來說上面的代碼是除了一個細節行 - 它應該是:

If IE.Name = "Internet Explorer" Then...它是大小寫敏感的。

最後我的代碼看起來是這樣的:

Imports SHDocVw 

Const openInTab As Object = &H800 
Dim internetExplorerInstances As New ShellWindows() 

Public Function IsProcessOpen(ByVal name As String) As Boolean 
    For Each clsProcess As Process In Process.GetProcesses 
     If clsProcess.ProcessName.Contains(name) Then 
      Return True 
     End If 
    Next 
    Return False 
End Function 

(...)

而且撥打:

   If IsProcessOpen("iexplore") Then 
        For Each IE As InternetExplorer In internetExplorerInstances 
         If IE.Name = "Internet Explorer" Then 
          IE.Navigate2(address, openInTab) 
          Exit For 
         End If 
        Next 
       Else 
        Process.Start("iexplore", address) 
       End If 

而且它的工作原理:)

相關問題