C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
работа IE в режим оффлайн, глюк при получении IOleControl
Guest
  Отправлено: 26.02.2006, 23:07


Не зарегистрирован







Мне нужно перевести работу IE в режим оффлайн для этого я реализовал функцию
[/CODE]
BOOL CPlugin::OnAmbientProperty(COleControlSite* pSite, DISPID dispid, VARIANT* pvar)
{
//AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (dispid == DISPID_AMBIENT_DLCONTROL)
{
pvar->vt = VT_I4;
pvar->lVal =DLCTL_FORCEOFFLINE;
return true;
}

return CPlugin::OnAmbientProperty(pSite,dispid,pvar);
}
[/CODE]
А так же функцию
CODE

void CPlugin::NotifyControl(void)
{

   ASSERT(m_pWebBrowser2!= NULL);
   IOleControl* pOleControl;
   IDispatch *Dispatch;
   m_pWebBrowser2->get_Container(&Dispatch);
   HRESULT hr = Dispatch->QueryInterface( __uuidof( IOleControl ), (void**)&pOleControl );
   if ( SUCCEEDED( hr ) )
   {
       pOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
       pOleControl->Release();
   }

}

Для изменения свойств в любое время. Но при первой загрузки документа функция OnAmbientProperty не вызывается, а при вызове NotifyControl при Dispatch->QueryInterface( __uuidof( IOleControl ), (void**)&pOleControl ); происходит ошибка Unhandled exception at 0x1002443c MY.dll in iexploer.exe
Что не так ? Нужно ли для OnAmbientProperty реализовывать какой либо обработчик или достаточно только ее определения ? wink.gif
GIZMO
Отправлено: 27.02.2006, 11:29


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (Guest @ 26/02/2006, 23:07)
Мне нужно перевести работу IE в режим оффлайн для этого я реализовал функцию
[/CODE]
BOOL CPlugin::OnAmbientProperty(COleControlSite* pSite, DISPID dispid, VARIANT* pvar)
{
//AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (dispid == DISPID_AMBIENT_DLCONTROL)
{
pvar->vt = VT_I4;
pvar->lVal =DLCTL_FORCEOFFLINE;
return true;
}

return CPlugin::OnAmbientProperty(pSite,dispid,pvar);
}
[/CODE]
А так же функцию
CODE

void CPlugin::NotifyControl(void)
{

ASSERT(m_pWebBrowser2!= NULL);
IOleControl* pOleControl;
IDispatch *Dispatch;
m_pWebBrowser2->get_Container(&Dispatch);
HRESULT hr = Dispatch->QueryInterface( __uuidof( IOleControl ), (void**)&pOleControl );
if ( SUCCEEDED( hr ) )
{
pOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
pOleControl->Release();
}

}

Для изменения свойств в любое время. Но при первой загрузки документа функция OnAmbientProperty не вызывается, а при вызове NotifyControl при Dispatch->QueryInterface( __uuidof( IOleControl ), (void**)&pOleControl ); происходит ошибка Unhandled exception at 0x1002443c MY.dll in iexploer.exe
Что не так ? Нужно ли для OnAmbientProperty реализовывать какой либо обработчик или достаточно только ее определения ? wink.gif

1. Приглядись по внимательней к названию форума и названию сайта (подсказка — там есть слово C++Builder). Отсюда вопрос: — есть смысл постить сюда если пишешь на VC/MFC?

2. Обработать DISPID_AMBIENT_DLCONTROL можно только в своем контейнере, отключить картинки, скрипты и т.д. таким способом у IE не получится.

Вернуться в Вопросы программирования в C++Builder