[英]Is there a way to open an IE window with a user-defined name. When same URL opened, already opened IE window comes to foreground
這是我打算實施的要求。 有一個 window 應用程序顯示了一些圖標,這些圖標將我帶到不同的 web 站點。 當我單擊其中一個圖標時,它應該打開一個 IE window 和 append 自定義名稱。
因此,在單擊網站圖標后打開任何網站之前,我想檢查是否已經打開了具有該自定義名稱的 IE window,如果是,則將已打開的 window 帶到前台。 如果沒有,請打開一個新的 IE window。
我檢查了發布的各種問題,這些問題與我希望實現的目標相關,但不知何故無法正確解決。 下面是我的嘗試。
For Each e In shellWins
If InStr(1, e.GetProperty("IEWindowName"), namedWindow, CompareMethod.Text) <> 0 Then
hWnd = e.HWND
myIE = e
End If
Next
If hWnd == -1
Dim p As New Process
Dim psi As New ProcessStartInfo(IEPath, webSiteURL)
p.StartInfo = psi 'Trying to open a new IE window
p.Start()
For Each ie In shellWins
If ie.hwdn = p.MainWindowHandle Then
ie.PutProperty("IEWindowName", namedWindow)
End If
Next
End if
Else
myIE.BringToForeground()
這有時有效,有時無效。 有沒有更好的方法呢?
在什么情況下不起作用? 當它不起作用時是否會拋出任何錯誤? 如果有,請告訴我們詳細的錯誤信息以及發生在哪一行。
此外,您可以嘗試比較 url 來檢查網站是否已經在 IE 中打開,如下所示:
Sub Main()
Dim shellWins As SHDocVw.ShellWindows
Dim explorer As SHDocVw.InternetExplorer
shellWins = New SHDocVw.ShellWindows
Dim SQuery As String = "https://www.example.com/"
For Each explorer In shellWins
If explorer.Application.Name = "Internet Explorer" And explorer.LocationURL.Contains(SQuery) Then
explorer.BringToForeground()
End If
Next
shellWins = Nothing
explorer = Nothing
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.