Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как перехватить клик по ссылке? мониторинг клика и перехват ссылки в IE 
:(
    Опции темы
Benedict
Дата 23.6.2003, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.6.2003

Репутация: нет
Всего: нет



Господа ,подскажите плиз, как можно организовать мониторинг клика по ссылке и перехват этой ссылки?

Тоесть, есть окно браузера (IE), есть програмулинка. Пользователь щелкает в браузере по ссылке, поргамуля ловит эту ссылку и после сравнения либо выдает сообщение либо ждет следующего клика.

Все казалось бы просто, но ни где не могу найти информации как реализовать сам мониторинг и перехват нажатой ссылки. confused.gif

Буду благодарен за советы.

PM MAIL   Вверх
<Spawn>
Дата 23.6.2003, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Может хуком на мышку?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Guest_Benedict
Дата 24.6.2003, 16:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











И это весь ответconfused.gif господа, плиз, как для чайника, если можно. :о(((( Ибо ни один уважающий себя программер не смог мне дать ответа... а таковых было уже человек 10
  Вверх
eof
Дата 24.6.2003, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 30.5.2003

Репутация: нет
Всего: нет



<Spawn> а как узнать, что клик произошел над ссылкой? как узнать адрес ссылки?
Плохо знаю как все это барахло работает (IE имеется в виду), но могу для того что бы было где копать предложить вариант:
Написать самому браузер (...\DelphiN\Demos\CullStuf\...), у компонента WebBrowser1 использовать событие BeforeNavigate2...
Вариан конечно так себе, но мне кажеться, что если порыть исходники, то можно чтонить найти.

PM MAIL   Вверх
Fantasist
Дата 26.6.2003, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Можно подключиться к запущенному IE, и через его интерфейсы получить это событие. В двух словах принцип простой: GetActiveObject("IE_GUID") -> QueryInterface("Нужный интерфейс"). Более подробно - лень. Только есть нюансов много: надо отлавливать запуск IE, пользователь может пользоваться другим браузером. В принципе, хук на мышку тоже решение, определит что это ссылка можно по формату строки, над которым мышка находиться, но этот линк может быть открыт в notepad для редактирования и тогда клик по нему вовсе не означает переход по нему. Вобщем, задача не такая тривиальная.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Benedict
Дата 26.6.2003, 03:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.6.2003

Репутация: нет
Всего: нет



GetActiveObject("IE_GUID") -> QueryInterface("Нужный интерфейс")
1. QueryInterface - Это что?
2. А какой именно нужный или где почитать об интерфейсах?
3. Именно IE все остальное не интересует. И точно известно, что он запущен... Но вот окон может быть несколько. Как тут быть?

А вообще, огромное спасибо.
PM MAIL   Вверх
<Spawn>
Дата 26.6.2003, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



QueryInterface - метод интрфейса IUnknown, который используется для получения клиентом ссылок на интерфейс. А вообще, если тебе хочется получше разобраться в технологии COM, то прикупи книжечку "Delphi 6 и технология COM" авторов Н. Елманова, С. Трепалин, А. Тенцер из которой я и взял данное определение.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Fantasist
Дата 28.6.2003, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



В общем, для тех у кого Делфи 7.

Код

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ActiveX, ComObj, StdCtrls, OleCtrls, SHDocVw;


type

 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   procedure BeforeNavigate(Sender: TObject; var pDisp: OleVariant;
                        var URL: OleVariant;
                        var Flags: OleVariant;
                        var TargetFrameName: OleVariant;
                        var PostData: OleVariant;
                        var Headers: OleVariant;
                        var Cancel: OleVariant);
 end;

var
 Form1: TForm1;
 IE: TInternetExplorer;

implementation

{$R *.dfm}

procedure TForm1.BeforeNavigate(Sender: TObject; var pDisp, URL, Flags,
 TargetFrameName, PostData, Headers, Cancel: OleVariant);
begin
 ShowMessage(URL);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 ifc:IUnknown;
begin
 IE:=TInternetExplorer.Create(self);
 GetActiveObject(ProgIDToClassID('InternetExplorer.Application'),nil,ifc);
 IE.ConnectTo(ifc as IWebBrowser2);
 IE.OnBeforeNavigate2:=BeforeNavigate;
end;


Ежели Делфи 6 или 5, то TInternetExplorer можно заменить на TWebBrowser



--------------------
Волны гасят ветер...
PM MAIL   Вверх
Mikel
Дата 28.6.2003, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Можно ещё попробовать капнуть в направлении качалок. Там есть скрипт, который определяет запустить ему качалку, или пропустить дальше.

Это сообщение отредактировал(а) Mikel - 28.6.2003, 12:49


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Benedict
Дата 28.6.2003, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 23.6.2003

Репутация: нет
Всего: нет



Цитата(Fantasist @ 28.6.2003, 04:58)
В общем, для тех у кого Делфи 7.

Код

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ActiveX, ComObj, StdCtrls, OleCtrls, SHDocVw;

 
************* Скипед ***********

end;


Ежели Делфи 6 или 5, то TInternetExplorer можно заменить на TWebBrowser

Прости, а что это? Как это расшифровать? Не мог бы ты описание добавить к коду?
Заранее спасибо.
PM MAIL   Вверх
Fantasist
Дата 30.6.2003, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



А что тут не понятного? TWebBrowser (TInternetExplorer) - это обертка над COM интерфейсами, которые предоставляет IE. C помощью GetActiveObject, нажодим запущенный экземпляр IE, и если он есть, подключаем его к обертке. Далее, используя эту обертку, вешаем обработчик на событие OnBeforeNavigate. Это, конечно, не отлов клика по ссылке, но почти.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0504 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.