Адресная строка iexlore.exe

Тема в разделе "WASM.WIN32", создана пользователем V1lko, 4 фев 2009.

  1. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    Доброго всем времени суток.
    Кто-нибудь знает, как обратиться к адресной строке IE из своей программки..?
    То-есть, программа при запуске смотрит, запущен ли процесс iexlore.exe, и если запущен, должна как то передать адрес в строку и выполнить переход нему...
    Кто что подскажет?
     
  2. letopisec

    letopisec New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2004
    Сообщения:
    228
    вот пример работы с контролами чужого окна
     
  3. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Если я правильно понял
    Код (Text):
    1. .686P
    2. .model flat
    3. include windows.inc
    4. includelib kernel32.lib
    5. includelib shell32.lib
    6. extern _imp__ShellExecuteA@24:dword
    7. extern _imp__ExitProcess@4:dword
    8. .code
    9. start:  xor ebx,ebx
    10.     push ebx
    11.     push ebx
    12.     push ebx
    13.     push offset URL
    14.     push ebx
    15.     push ebx
    16.     call _imp__ShellExecuteA@24
    17.     push ebx
    18.     call _imp__ExitProcess@4
    19. URL db 'http://www.wasm.ru',0
    20. end start
     
  4. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    FindWindow/FindWindowEx
     
  5. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    Запущен IE или нет я уже определил, надо только как то передать ему http:// адрес и перейти по нему...
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    А чем мой пример плох?
     
  7. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    V1lko ну вот и ищи по названию дочернее окно (поле ввода браузера) типа 'Edit' FindWindowEx'ом делай SetWindowText (или SendMessage(WM_SETTEXT вроде так...) и всё... дальше кнопку таким же макаром, ну или программно F5 клацнуть.
     
  8. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    Mikl___, а он рабочий?
    Немного непонятно каким образом строка с адресом передаётся именно в IE...
     
  9. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    V1lko рабочий
     
  10. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    Exp10der Можно поподробнее?
    Нашёл описание функций, но что именно туда подставлять не пойму...
    Как узнать pClassName..?

    Плз, не бейте сильно, под ВинАПИ ещё не писал..
     
  11. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    Mikl___ Чёт не открывает...
     
  12. Noga

    Noga New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    92
    V1lko

    Код (Text):
    1. .386
    2. .model flat,stdcall
    3. include windows.inc
    4. includelib kernel32.lib
    5. includelib shell32.lib
    6. extern _imp__ShellExecuteA@24:dword
    7. extern _imp__ExitProcess@4:dword
    8. .data
    9. URL db 'http://www.wasm.ru',0
    10. .code
    11. start:  xor ebx,ebx
    12.     push ebx
    13.     push ebx
    14.     push ebx
    15.     push offset URL
    16.     push ebx
    17.     push ebx
    18.     call _imp__ShellExecuteA@24
    19.     push ebx
    20.     call _imp__ExitProcess@4
    21. end start
    MSDN http://msdn.microsoft.com/en-us/library/bb762153(VS.85).aspx
     
  13. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    ShellExecute, вроде, запускает браузер, установленный по умолчанию в системе. Не так ли?
     
  14. Noga

    Noga New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    92
    Microedition

    Да. В msdn все написано.
     
  15. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Не принципиально, вы же только читаете, но не пишите в эту строку, хотя я использую при сборке опцию /MERGE:.data=.text чтобы уменьшить размеры exe
     
  16. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    V1lko
    Найти контрол в чужом приложении не очень сложно. Послать ему сообщение - тоже без проблем. Но передать данные (строку c адресом) в чужой контрол непросто.
    Дело в том, что передающий и принимающий находятся в разных процессах. Поэтому придется извращаться с записью в память чужого процесса.
    Кроме того антивирусы ругаться будут.
    Такая задача решается через COM-интерфейс (IWebBrowser) или, как уже советовали, через ShellExecute.
     
  17. Noga

    Noga New Member

    Публикаций:
    0
    Регистрация:
    10 окт 2008
    Сообщения:
    92
    Mikl___

    Я и не претендовал на лучший вариант, просто у меня не скомпилился твой исходник, я поправил для себя, проверил и выложил для V1lko с ссылкой на msdn.
     
  18. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    V1lko
    Если требуется конкретнo IE либо какой-то другой браузер, то можно и так
    Код (Text):
    1. .686P
    2. .model flat,stdcall
    3. include windows.inc
    4. includelib kernel32.lib
    5. extern _imp__WinExec@8:dword
    6. extern _imp__ExitProcess@4:dword
    7. .data
    8. URL db 'C:\Program Files\Internet Explorer\iexplore.exe "http://www.wasm.ru"',0
    9. .code
    10. start:  push SW_RESTORE
    11.     push offset URL
    12.     call _imp__WinExec@8
    13.     push 0
    14.     call _imp__ExitProcess@4
    15. end start
    MSDN WinExec
     
  19. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    Partner
    Да вы что? :) а я то думал...
    Код (Text):
    1. var StartButton: dword; str: string;
    2. begin
    3. StartButton:=FindWindowEx(FindWindow('Shell_TrayWnd',0),0,'Button', 0);
    4. str:='Pusk';
    5. SendMessage(StartButton, WM_SETTEXT, 0, dword(@str[1]));
    [​IMG]
    так же и с едитом експлорера можно сделать, но если у юзера другой браузер это добавит кучу геммора, winexec(... проще
     
  20. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Exp10der
    Согласен, прогнал. Чего-то вылетело про WM_SETTEXT