Определение URL любых открытых окон IE - PullRequest
3 голосов
/ 12 октября 2011

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

Спасибо!

Ответы [ 3 ]

1 голос
/ 13 октября 2011

Простое решение, и оно работает: http://omegacoder.com/?p=63

1 голос
/ 12 октября 2011

Это один из способов сделать это (код Visual Basic, извините, но он показывает принцип):

Private Declare Function GETWINDOWTEXT Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Integer, ByVal lpString As String, ByVal cch As Integer) As Integer
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Integer) As Integer
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Integer, ByVal hWnd2 As Integer, ByVal lpsz1 As String, ByVal lpsz2 As String) As Integer
Private Declare Ansi Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As String) As Integer
Private Const WM_GETTEXT As Short = &HDS
Private Const WM_GETTEXTLENGTH As Short = &HES

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    Dim hwnd As Integer = FindWindowEx(0, 0, "IEFrame", vbNullString)

        If Not hwnd = 0 Then
            SetForegroundWindow(hwnd)

            Dim Worker As Integer = FindWindowEx(hwnd, 0, "WorkerW", vbNullString)
            Dim ToolBar As Integer = FindWindowEx(Worker, 0, "ReBarWindow32", vbNullString)
            Dim ComboBoxEx As Integer = FindWindowEx(ToolBar, 0, "ComboBoxEx32", vbNullString)

            Dim txtLength As Long = SendMessage(ComboBoxEx, WM_GETTEXTLENGTH, CInt(0), CInt(0)) + 1  ' Get Length Of Text
            Dim txtBuff As String = Space(txtLength)
            Dim URL As Long = URL = SendMessage(ComboBoxEx, WM_GETTEXT, txtLength, txtBuff) 'Get URL From ComboBoxEx

            MsgBox(txtBuff)
        End If
End Sub

По сути, вы находите окно IE, а затем переходите кнайдите поле со списком, в котором набран URL, а затем получите любую строку, введенную в него.Очевидно, что это не идеальный подход (если кто-то перезаписывает URL-адрес, но не нажимает Enter, вы об этом не узнаете).

0 голосов
/ 12 октября 2011
  • Запустите IE самостоятельно с помощью автоматизации (т.е. var oIE = WScript.CreateObject("InternetExplorer.Application", "IE_");) и прослушайте NavigateComplete2.

  • Peek inot ROT (таблица запущенных объектов) - я думаю, что там должны отображаться документы IE - Win32 / COM - http://msdn.microsoft.com/en-us/library/ms684004(VS.85).aspx

  • Просто найдите все окна IE и хорошо возьмите текст с адреса (см. Ответ MusiGenesis).

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