| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как перехватить клик по ссылке? |
| Автор: Benedict 23.6.2003, 12:52 |
| Господа ,подскажите плиз, как можно организовать мониторинг клика по ссылке и перехват этой ссылки? Тоесть, есть окно браузера (IE), есть програмулинка. Пользователь щелкает в браузере по ссылке, поргамуля ловит эту ссылку и после сравнения либо выдает сообщение либо ждет следующего клика. Все казалось бы просто, но ни где не могу найти информации как реализовать сам мониторинг и перехват нажатой ссылки. Буду благодарен за советы. |
| Автор: <Spawn> 23.6.2003, 16:29 |
| Может хуком на мышку? |
| Автор: Guest_Benedict 24.6.2003, 16:20 |
| И это весь ответ |
| Автор: eof 24.6.2003, 18:04 |
| <Spawn> а как узнать, что клик произошел над ссылкой? как узнать адрес ссылки? Плохо знаю как все это барахло работает (IE имеется в виду), но могу для того что бы было где копать предложить вариант: Написать самому браузер (...\DelphiN\Demos\CullStuf\...), у компонента WebBrowser1 использовать событие BeforeNavigate2... Вариан конечно так себе, но мне кажеться, что если порыть исходники, то можно чтонить найти. |
| Автор: Fantasist 26.6.2003, 02:32 |
| Можно подключиться к запущенному IE, и через его интерфейсы получить это событие. В двух словах принцип простой: GetActiveObject("IE_GUID") -> QueryInterface("Нужный интерфейс"). Более подробно - лень. Только есть нюансов много: надо отлавливать запуск IE, пользователь может пользоваться другим браузером. В принципе, хук на мышку тоже решение, определит что это ссылка можно по формату строки, над которым мышка находиться, но этот линк может быть открыт в notepad для редактирования и тогда клик по нему вовсе не означает переход по нему. Вобщем, задача не такая тривиальная. |
| Автор: Benedict 26.6.2003, 03:29 |
| GetActiveObject("IE_GUID") -> QueryInterface("Нужный интерфейс") 1. QueryInterface - Это что? 2. А какой именно нужный или где почитать об интерфейсах? 3. Именно IE все остальное не интересует. И точно известно, что он запущен... Но вот окон может быть несколько. Как тут быть? А вообще, огромное спасибо. |
| Автор: <Spawn> 26.6.2003, 14:41 |
| QueryInterface - метод интрфейса IUnknown, который используется для получения клиентом ссылок на интерфейс. А вообще, если тебе хочется получше разобраться в технологии COM, то прикупи книжечку "Delphi 6 и технология COM" авторов Н. Елманова, С. Трепалин, А. Тенцер из которой я и взял данное определение. |
| Автор: Fantasist 28.6.2003, 04:58 | ||
В общем, для тех у кого Делфи 7.
Ежели Делфи 6 или 5, то TInternetExplorer можно заменить на TWebBrowser |
| Автор: Mikel 28.6.2003, 12:48 |
| Можно ещё попробовать капнуть в направлении качалок. Там есть скрипт, который определяет запустить ему качалку, или пропустить дальше. |
| Автор: Benedict 28.6.2003, 22:54 | ||||
Прости, а что это? Как это расшифровать? Не мог бы ты описание добавить к коду? Заранее спасибо. |
| Автор: Fantasist 30.6.2003, 16:54 |
| А что тут не понятного? TWebBrowser (TInternetExplorer) - это обертка над COM интерфейсами, которые предоставляет IE. C помощью GetActiveObject, нажодим запущенный экземпляр IE, и если он есть, подключаем его к обертке. Далее, используя эту обертку, вешаем обработчик на событие OnBeforeNavigate. Это, конечно, не отлов клика по ссылке, но почти. |