IE + COM

Тема в разделе "WASM.BEGINNERS", создана пользователем protoman, 25 ноя 2006.

  1. protoman

    protoman New Member

    Публикаций:
    0
    Регистрация:
    12 сен 2006
    Сообщения:
    6
    Всем привет

    Уважаемые проффесионалы помогите:

    делаю CoInitialize, CoCreateInstance все окей..
    нахожу окно IE с помощью переборки Item'ов в IShellWindows и используя IWebBrowser2
    с этим проблем нет
    но когда после этого хочу работать с интерфейсом DWebBrowserEvents2 ничего не получается, пишу так:

    Код (Text):
    1. ...
    2. ;IShellWindows->Item
    3. ;########## ppi - WebBrowserDisp
    4. ;####### IWebBrowser2::Dispatch
    5.        
    6.                 .if eax==0  
    7.  
    8. ;//## До сюда код работает окно IE находит... но вот дальше
    9.    
    10.             coinvoke ppi, IDispatch, QueryInterface, ADDR IID_WBE, ADDR ppi3  
    11.            
    12.             coinvoke ppi3, DWebBrowserEvents2, DocumentComplete, ADDR ppi4, ADDR szUrlFrWBE
    13.            
    14.            .if eax==S_OK
    15.            
    16.            invoke MessageBox, 0, addr dnlcompl,addr dnlcompl,MB_OK
    По загрузке документа в IE сообщение о том что документ успешно открылся мне не выдается :dntknw: Объясните пожалуйста почему, или я чтото не так делаю. спасибо.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    protoman
    Ты понимаешь, что DocumentComplete - это событие, что тебе необходимо уведомить ie, что твоя программа хочет получать от него уведомления о событиях?
    Попытка обсудить уведомления о событиях была Не могу получить указатели на интерфейсы MS Word.
    К твоему случаю ближе (если не боишься C++) BHO (Browser Helper Objects)
    Если хочешь разобраться, то ключевые слова для поиска FindConnectionPoint и Advise.

    Есть метод определения загрузки страницы проще. У IWebBrowser2 есть свойство ReadyState. Можно опрашивать его в цикле.