перехват открытия URL в браузере из другого приложения ?

Тема в разделе "WASM.WIN32", создана пользователем villy, 3 июн 2009.

  1. villy

    villy New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2008
    Сообщения:
    21
    как лучше реализовать перехват открытия URL в браузере из другого приложения,получить URL,
    и отфильтровать(тоесть пропустить к браузеру или нет)?

    вот что пишет мсдн
    How ShellExecute Determines Whether to Start a New Instance
    When ShellExecute looks through the registry, it looks for the shell\open subkey. If the shell\open\ddeexec key is defined, then a Dynamic Data Exchange (DDE) message with the specified application IExplore and the topic WWW_OpenURL is broadcast to all top-level windows on the desktop. The first application to respond to this message is the application that goes to the requested URL. If no application responds to this DDE message, then ShellExecute uses the information that is contained in the shell\open\command subkey to start the application. It then re-broadcasts the DDE message to go to the requested URL.



    в фаерфокс все просто, хук на запуск приложения и GetComanLine(), там вызов

    [HKEY_LOCAL_MACHINE\SOFTWARE\Classes\HTTP\shell\Firefox\command]
    @="\"C:\\Program Files\\Mozilla Firefox\\firefox.exe\" -requestPending -osint -url \"%1\""

    опера
    "C:\Program Files\Opera\opera.exe" "%1"
    иногда
    "C:\Program Files\Opera\opera.exe"

    вот %1 url в команд лайне.

    в ИЕ по другому
    iexplore.exe -nohome
    ну или чет типа, то есть "%1" самого урла нету.

    Вариант садить обработчик на http , и потом вызывать браузер не инетресно, тк перехватить WWW_OpenURL, когда запущен браузер, то просто новая вкладка, я интересно ее тоже перехватывать.

    Может я торможу, но простых и красивых вариантов не нашел.
     
  2. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Ну думаю МСДН пишет только о себе-подобных, посему советую юзать перехват функций
    send, WSASend sendto, WSASentTo и в них разбирать запросы. Но хз. может есть другой способ
     
  3. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    Или ты имеешь ввиду открытие урла по, допустим, ярлыку?
     
  4. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    универсально можно сделать только получение доменных имён (хуками днс функций). с [WSA](send/recv) будут проблемы с https.
     
  5. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    gluk, potrite posti.
     
  6. villy

    villy New Member

    Публикаций:
    0
    Регистрация:
    3 мар 2008
    Сообщения:
    21
    нет, вы не поняли.
    мне надо перехватить именно
    ShellExecute/Ex (open, http://...);

    только когда саму функу перехватываеш, получаются глюки на разних системах, в висте там намутили с сообщениями, и там все очен не кошерно получается.

    Вот думал мож какой нить ком интерфес для рпс, или че нить есть, для обработки.
     
  7. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    хз какие глюки могут быть, попробуй ZwCreateProcess перехватывать.