Определить текущий URL окна IE программно без BHO - PullRequest
0 голосов
/ 10 марта 2011

Может ли кто-нибудь подсказать мне, как я могу определить текущий URL-адрес IE программно без BHO?

Единственный способ, с помощью которого я смог придумать такую ​​функциональность, - это посмотреть на заголовок окна, а не на URL, но это кажется хакерским.

С другой стороны, я предполагаю, что текстовое поле, в котором хранится URL-адрес, будет иметь дескриптор, к которому я присоединяюсь и читаю текст.Я прав в этом предположении?

Будем благодарны за любые рекомендации.

PS: Бонусные баллы, если вы можете предоставить пример / руководство, которое будет работать и с Firefox.

РЕДАКТИРОВАТЬ: ОК, такДальнейшие исследования начинают раскрывать, что мне нужно посмотреть на GetWindowText и сообщение WM_GETTEXT.Если я получу все это, я опубликую ответ.

1 Ответ

0 голосов
/ 25 июня 2015

Так что это ДЕЙСТВИТЕЛЬНО старый пост, но я наткнулся на него, подумав, что постараюсь ответить на него, поскольку только что узнал об этом :)

Вы можете сделать это, используя оболочку Windows .Вы можете перебирать открытые окна и искать любой объект «HTTPDocumentClass» (это окна Internet Explorer), а затем вы можете получить доступ к члену .LocationUrl , чтобы узнать URL.

Я не знаю, как написать пример на C #, но вот как вы делаете это на VB.
ПРИМЕЧАНИЕ: вам нужно добавить ссылки на Microsoft Shell Controls and Automation и Microsoft Internet Controls .

Imports Shell32
Imports SHDocVw

Public Function GetIExplorerURL() As String()
    Dim exShell As New Shell32.Shell
    Dim URLs As New List(Of String)
    For Each window As SHDocVw.ShellBrowserWindow In DirectCast(exShell.Windows, SHDocVw.IShellWindows)
        If TypeName(window.Document) = "HTMLDocumentClass" Then
            URLs.Add(window.LocationURL)
        End If
    Next

    Return URLs.ToArray
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...