0 / 0 / 0
Регистрация: 19.07.2015
Сообщений: 10
1

Не получается вызвать событие onDocumentComplete в IE

03.11.2016, 13:58. Показов 1269. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пишу дополнение для IE. Есть необходимость после полной загрузки страницы выполнять действия. У меня не получается зарегистрировать событие. Так как не получает интерфейс браузера.

Проект создавал по этой инструкции https://msdn.microsoft.com/en-... s.85).aspx

Но вот в функции SetSite вот эта строчка
C++
1
HRESULT hr = pUnkSite->QueryInterface(IID_IWebBrowser2, (void **)&m_spWebBrowser);
вернула ошибку, и после чего не получается регистрировать событие. подскажите что делать? что не так?

ссылка на мой проект (https://cloud.mail.ru/public/Gy6p/xWDxMGWU7) если кому то будет проще так отследить ошибку.

В реестре регистрировал приложение в ручную, кто хочет автоматически, можете дописать инструкцию в файл .rgs
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2016, 13:58
Ответы с готовыми решениями:

Принудительно вызвать событие, если произошло другое событие
Сразу оговорюсь, это тема про события, а НЕ про Windows Forms, да бы ни кто не переносил тему. В...

вызвать событие у чекбокса
Доброго времени суток! Наверняка уже задавался такой вопрос, но я не знаю как найти :) В общем...

Вызвать событие queryAfterScroll
Добрый день! Подскажите как программно вызвать событие: void __fastcall...

Вызвать событие вручную
Как вызвать событие например "появление подсказки tooltip" вручную, например после нажатия кнопки?

1
Ушел с форума
Эксперт С++
16472 / 7435 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
03.11.2016, 14:52 2
Когда я разрабатывал BHO для Internet Explorer, то получал интерфейс IWebBrowser2
по-другому: у IUnknown, который передается в метод IObjectWithSite::SetSite, надо сначала
запросить через QueryInterface интерфейс IServiceProvider, а затем уже у этого провайдера
запрашивать IWebBrowser2 через метод QueryService.

Вот пример из одного реального проекта:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <ShlGuid.h> // Определения нужных CLSID, IID и т.д.
 
// ...
 
IWebBrowser2 * GetWebBrowser2(IUnknown * pUnkSite)
{
    CComQIPtr<IServiceProvider> SrvProv(pUnkSite);
 
    if (SrvProv)
    {
        IWebBrowser2 *pWebBrowser2;
 
        if (S_OK == SrvProv->QueryService(
            SID_SWebBrowserApp,
            IID_IWebBrowser2,
            (void **)&pWebBrowser2))
        {
            return pWebBrowser2;
        }
    }
 
    return NULL;
}
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2016, 14:52
Помогаю со студенческими работами здесь

Программно вызвать последнее событие
Привет всем. Стоит задача - восстановить состояние формы (только до последнего произошедшего...

Вызвать событие другой формы
Доброе время суток. у меня есть 2 окна. мне нужно что бы при нажатии кнопки во второй окне,...

Как вызвать событие кнопки?
Вопрос наверное глупый, а ответ на него простой, но я недавно начал изучать vb.net, так что не...

Вызвать событие в другом классе
Добрый день. Есть класс MainWindow, в нём есть функция AddPreloadedCharts(). Есть статический...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru