Перехват события OnNewWindow2 в MSIE

Тема в разделе "WASM.WIN32", создана пользователем niro, 16 ноя 2009.

  1. niro

    niro New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    35
    Всем привет!

    Задача стоит такая: открыть окно MSIE, используя OLE, затем отслеживать когда пользыватель перейдет по какой либо ссылке и произойдет событие OnNewWindow2. Далее необходимо блокировать всплывающее окно и загрузить новую страницу в мой экземпляр браузера.

    Вот код открывающий IE:

    program q1;
    var
    IE: variant;
    begin
    IE := CreateOleObject('InternetExplorer.Application');
    IE.Visible:=false;
    IE.Navigate('http://blablabla.com', 4);
    While IE.Busy do
    begin
    sleep(100);
    end;
    end.

    Дальше необходимо перехватить и обработать событие, а как это сделать для меня вопрос... Есть у кого соображения на этот счет?
     
  2. niro

    niro New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    35
    Сейчас уже кое что прояснилось, но еще не до конца, уже понял как обработать сообщение OnBeforeNavigate2, но OnNewWindow2 ни как не получается...

    что не так в этом коде:

    type
    TEventHolder = class
    public
    procedure MyBeforeNavigate2(Sender: TObject; var pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel: OleVariant);
    procedure MyOnNewWindow2 (Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
    end;

    var
    IE: TInternetExplorer;
    EventHolder: TEventHolder;


    procedure TEventHolder.MyOnNewWindow2 (Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool);
    begin

    end;

    procedure TEventHolder.MyBeforeNavigate2(Sender: TObject; var pDisp, URL, Flags, TargetFrameName, PostData, Headers, Cancel: OleVariant);
    begin

    end;

    begin
    CoInitialize(nil);
    IE:=TInternetExplorer.Create(nil);
    IE.Visible:=True;
    EventHolder := TEventHolder.Create;
    IE.OnNewWindow2:=EventHolder.MyOnNewWindow2;
    IE.Navigate('c:\1.html');
    CoUninitialize;
    end.

    ошибка: Incompatible types: 'OleVariant' and 'IDispatch'
     
  3. niro

    niro New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2009
    Сообщения:
    35
    Неужели ни кто не может помочь???