Как программно нажать кнопку в Internet Explorer

Тема в разделе "WASM.WIN32", создана пользователем _Sysman_, 19 мар 2007.

  1. _Sysman_

    _Sysman_ Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    50
    Адрес:
    Ukraine
    Опишу ситуацию.
    Имеется браузер, построенный на движке Internet Explorer'a.
    Что необходимо: при вводе определённого текста в адресную строку (например, http://куча_вирусов.ru/самый_страшный_вирус.exe) текст в адресной строке заменяется на другой (например, http://127.0.0.1/не_ходи_туда.htm) и нажимается программно кнопка "Переход".

    Первую часть задачи получилось сделать нормально:
    С помощью Spy++ отследил названия классов окон (рис. 1.jpg в архиве-вложении).
    Повезло, они оказались уникальными в необходимых пределах.

    Таким образом получил хэндл адресной строки:
    hwnd=FindWindowEx(hwnd, 0, "Acoo Browser", NULL)
    далее
    hwnd=FindWindowEx(hwnd, 0, "ReBarWindow32", NULL)
    далее
    hwnd=FindWindowEx(hwnd, 0, "_AddressBar", NULL)
    далее
    hwnd=FindWindowEx(hwnd, 0, "ComboBox", NULL)
    далее
    hwnd=FindWindowEx(hwnd, 0, "Edit", NULL)

    Далее с помощью SendMessage(hwnd, WM_GETTEXT, TextLength + 1, buffer)
    получил текст в адресной строке;

    с помощью SendMessage(hwnd, WM_SETTEXT, 0, "http://127.0.0.1/не_ходи_туда.htm")
    заменил текст в адресной строке

    А вот как программно нажать кнопку "переход"?
    Название класса кнопки "_ToolBarXP" и на "_AddressBar" - 2 окна с таким именем! (рис 1.jpg). Это сама кнопка "переход" (рис. 3.jpg) и другая кнопка "адрес" (рис. 4.jpg).

    Так как её нажать программно? Кнопка также содержит список (рис. 2.jpg). Можно ли программно "нажать" нужный пункт из этого списка?

    Подскажите, пожалуйста. Если можно, очень прошу кинуть код на каком-нибудь ЯВУ.

    P. S. Поиск решения этого в поисковиках не дал результатов.
     
  2. _Sysman_

    _Sysman_ Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    50
    Адрес:
    Ukraine
    Вложение (70 Кб)
    Здесь добавить к сообщению - не добавляется, пробовал и на 2 части разбивать по 35 Кб - тот же результат!

    Залил тут: http://rapidshare.com/files/21728065/Pic.zip
     
  3. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    пошли туда WM_KEYDOWN CrLf (Enter, в смысле, в адресную строку) и будет тебе счастье
     
  4. _Sysman_

    _Sysman_ Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    50
    Адрес:
    Ukraine
    Пробовал и так - результат нулевой :dntknw:
     
  5. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    не проще какой-нибудь ADMucher использовать?
     
  6. CnCVK

    CnCVK New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2006
    Сообщения:
    108
    IWebBrowser?
    Так приатачь обработчик событий, там есть событие BeforeNavigate, получает URL в качестве параметра, если вернешь false то переход не происходит :)
     
  7. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а если нужно именно перенаправить страницу?
     
  8. MCNet

    MCNet New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2006
    Сообщения:
    74
    _Sysman_
    Вы уверены, что другой способ решения не подойдёт? Например со снортом или прокси...
     
  9. MCNet

    MCNet New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2006
    Сообщения:
    74
    Есть вариант прописать сайту куча_вирусов.ru *нужный* IP-адрес в %windir%/system32/drivers/etc/hosts (могу в пути ошибиться)
     
  10. _Sysman_

    _Sysman_ Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    50
    Адрес:
    Ukraine
    Нужно реализовать всё именно так

    именно так

    В день более десятка тысяч уникальных адресов прописывать? :)))

    Нет, AcooBrowser
     
  11. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    я бы все-таки подумал о прокси.. возможно, уже существующих

    lol! (sorry)
    http://msdn.microsoft.com/library/d...eference/ifaces/iwebbrowser2/iwebbrowser2.asp
     
  12. MCNet

    MCNet New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2006
    Сообщения:
    74
    _Sysman_
    1. Так какая разница куда прописывать: в hosts или в программу _специальная_программа_???
    2. Мой мозг не выдерживает таких извращений :derisive: Путей обхода такой _защиты_ милъён+1 ИМХО прокси - это наше всё!
    3. Есть регулярно обновляемые блок-листы.