有没有办法用用户定义的名称打开 IE window。当相同的 URL 打开时,已经打开的 IE window 进入前台
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 应用程序显示了一些图标,这些图标将我带到不同的网站。当我单击其中一个图标时,它应该打开一个 IE window 并为其附加一个自定义名称。
所以,在我点击网站图标后打开任何网站之前,我想检查是否已经有一个 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
这是我打算实现的要求。有一个 window 应用程序显示了一些图标,这些图标将我带到不同的网站。当我单击其中一个图标时,它应该打开一个 IE window 并为其附加一个自定义名称。
所以,在我点击网站图标后打开任何网站之前,我想检查是否已经有一个 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