fasterdammit Ответов: 1

Как я могу проверить каждое открытое окно IE (для URL-адреса или заголовка)


Я работаю над приложением VB в VS'10, которое будет открывать новые окна браузера IE на различных сайтах. В том случае, если пользователь уже открыл окно на определенный ресурс, я не хочу открывать второе окно, а вместо этого "найти" существующее и вывести его на передний план. У меня будут URL-адреса целевой страницы (по которым я могу определить основной домен) и в некоторых случаях заголовок страницы, чтобы я мог соответствовать любому из этих элементов.

Я смог перечислить различные открытия сессии, т. е. через SHDocVw.SHellWindows, но я не смог точно определить конкретный идентификатор процесса, чтобы вызвать Process.GetProcesses.SetForeGroundWindow(). Если я буду полагаться только на процесс.GetProcesses, похоже, я могу найти только самое последнее использованное окно.

Ниже приведена соответствующая часть Sub, которая использовала SHDocVw для сравнения URL-адресов существующих окон с тем, которое мне нужно либо найти, либо запустить. В какой - то момент я безуспешно попробовал AppActivate () - но я не уверен, что это то, чего я действительно хотел.

Любые комментарии и обратная связь очень ценятся. Спасибо заранее

Что я уже пробовал:

Private Sub checkIE(ByVal inURL As String)

Dim blnDoNew As Boolean = True
Dim SWs As New SHDocVw.ShellWindows
Dim IE As SHDocVw.InternetExplorer
Dim strDomain As String = Replace(Replace(inURL.ToLower(), "https://", ""), "http://", "")
   strDomain = strDomain.Substring(0, (InStr(strDomain, "/") - 1))
   strDomain = strDomain.Substring(InStr(strDomain, "."))

   For Each IE In SWs
      If InStr(IE.Name, "Internet Explorer") > 0 Then
      '           Ignore empty names, and "about" and "blank", tabs:   '
         If (IE.LocationName <> "") _
               And (IE.LocationURL <> "about:Tabs") _
               And (IE.LocationURL <> "about:blank") Then
            If InStr(IE.LocationURL.ToString().ToLower(), strDomain) > 0 Then
               blnDoNew = False
               IE.Visible = True

               '   How do I find this session and pop it to the forefront?   '

            End If
         End If
      End If
   Next

   If blnDoNew Then
      openIE(inURL)
   End If
End Sub