Загрузка без картинок в CppWebBroser... как?
при нажатии на кнопку нужно, чтоб в CppWebBrouser
грузилась страничка без картинок. Подскажите пожлалуйста код.
Спасибо.
а так же если хочешь, чтоб они пропали у IE...тогда
[QUOTE=kosfiz]
надо лезть в реестр HKCU\Software\Microsoft\Internet Explorer\Main...[/QUOTE]
В связи с чем у меня самого возникает два вопроса ;)
1. Как подключиться к событиям TCppWebBrowser в Borlnad C++ Builder?
2. Как реализовать перехват указанного в статье события?
Прошу сильно не пинать, в этой области я, как можно заметить, новичек. Буду весьма признателен за ответы!
Ну, так ты нам предлагаешь почитать и перевести, что-ли?
1. Как подключиться к событиям TCppWebBrowser в Borlnad C++ Builder?
Они выведены в ObjectInspector.
2. Как реализовать перехват указанного в статье события?
Hosts can control certain aspects of downloadingframes, images, Java, and so onby implementing both IOleClientSite and an ambient property defined as DISPID_AMBIENT_DLCONTROL. When the host's IDispatch::Invoke method is called with dispidMember set to DISPID_AMBIENT_DLCONTROL, it should place zero or a combination of the following values in pvarResult.
Прошу прощения за ламерский вопрос.
: FWebBrowser(WebBrowser), FRefCount(1)
{
...
FDownloadOptionValue = (DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_BGSOUNDS);
FDownloadControlOptions << dcoImages << dcoVideos << dcoBgsounds;
if( (FWebBrowser) && ((Shdocvw_tlb::IWebBrowser2*)FWebBrowser->ControlInterface) )
{
IOleObject *pObj = NULL;
if(SUCCEEDED(FWebBrowser->ControlInterface->QueryInterface(IID_IOleObject, (void **) &pObj)) )
{
pObj->SetClientSite(this);
pObj->Release();
}
}
...
}
Увидел идею переопределения стандартного метода Invoke у IDispatch, для управления показом-отключенем показа картинок, на одном форуме по Delphi (и оно у них похоже работает), перенес ее в Билдер, но у меня не фурычит.
Ругается про ассес виолейшн подолгу.
Ругается даже если просто создаю пустой класс на основе TCppWebBrowser и пытаюсь делать Navigate им :(
class TCppMyBrowser : public TCppWebBrowser
{
public:
virtual __fastcall TCppMyBrowser(TComponent* AOwner): TCppWebBrowser(AOwner) {};
}
Что я не так делаю?
Вот код
"ChildWin.h"
class TCppMyBrowser : public TCppWebBrowser
{
public:
virtual __fastcall TCppMyBrowser(TComponent* AOwner): TCppWebBrowser(AOwner) {};
STDMETHOD(Invoke)(DISPID dispIdMember, REFIID riid, LCID lcid,
WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult,
EXCEPINFO * pExcepInfo, UINT * puArgErr)
{
switch (dispIdMember)
{
case DISPID_AMBIENT_DLCONTROL:
pVarResult->vt = VT_I4;
pVarResult->lVal = DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_NO_SCRIPTS;
break;
default:
return TCppWebBrowser::Invoke(dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr);
}
return S_OK;
}
};
"ChildWin.cpp"
__fastcall TMDIChild::TMDIChild(TComponent *Owner)
: TForm(Owner)
{
CppMyBrowser = new TCppMyBrowser(this);
CppMyBrowser->TOleControl::Parent = this;
CppMyBrowser->Align = alClient;
CppMyBrowser->Navigate(WideString("ya.ru"));
}
Увидел идею переопределения стандартного метода Invoke у IDispatch, для управления показом-отключенем показа картинок, на одном форуме по Delphi (и оно у них похоже работает), перенес ее в Билдер, но у меня не фурычит.
Ругается про ассес виолейшн подолгу.
Ругается даже если просто создаю пустой класс на основе TCppWebBrowser и пытаюсь делать Navigate им :(
Наследоваться от TCppWebBrowser не получится (no comment...), наследуй свой класс от IOleClientSite. IDispatch и втыкай через IOleObject::SetClientSite
{
ULONG m_RefCount;
public:
WebFilter();
STDMETHODIMP QueryInterface(REFIID iid, void ** ppvObject);
STDMETHODIMP_(ULONG)AddRef();
STDMETHODIMP_(ULONG)Release();
STDMETHODIMP SaveObject();
STDMETHODIMP GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk);
STDMETHODIMP GetContainer(LPOLECONTAINER FAR* ppContainer);
STDMETHODIMP ShowObject();
STDMETHODIMP OnShowWindow(BOOL fShow);
STDMETHODIMP RequestNewObjectLayout();
STDMETHODIMP GetTypeInfoCount(unsigned int FAR* pctinfo);
STDMETHODIMP GetTypeInfo(unsigned int iTInfo, LCID lcid, ITypeInfo FAR* FAR* ppTInfo);
STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgDispId);
STDMETHODIMP Invoke(DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pVarResult,
EXCEPINFO * pExcepInfo,
UINT * puArgErr);
};
WebFilter::WebFilter()
{
m_RefCount = 0;
}
STDMETHODIMP WebFilter::QueryInterface(REFIID iid, void ** ppvObject)
{
if(iid == IID_IUnknown)
{
*ppvObject = reinterpret_cast<IUnknown*>(this);
}
else if(iid == IID_IOleClientSite)
{
*ppvObject = (IOleClientSite*)this;
}
else if(iid == IID_IDispatch)
{
*ppvObject = (IDispatch*)this;
}
if(*ppvObject)
{
((IUnknown*)*ppvObject)->AddRef();
}
return S_OK;
}
STDMETHODIMP_(ULONG)WebFilter::AddRef()
{
return ++m_RefCount;
}
STDMETHODIMP_(ULONG)WebFilter::Release()
{
if(--m_RefCount == 0)
{
delete this;
return 0;
}
return m_RefCount;
}
STDMETHODIMP WebFilter::SaveObject()
{
return S_OK;
}
STDMETHODIMP WebFilter::GetMoniker(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk)
{
return E_NOTIMPL;
}
STDMETHODIMP WebFilter::GetContainer(LPOLECONTAINER FAR* ppContainer)
{
if (ppContainer == NULL)
return E_INVALIDARG;
HRESULT hr = QueryInterface(
IID_IOleContainer, (void**)(ppContainer));
if(SUCCEEDED(hr))
return hr;
else
return E_INVALIDARG;
}
STDMETHODIMP WebFilter::ShowObject()
{
return E_NOTIMPL;
}
STDMETHODIMP WebFilter::OnShowWindow(BOOL fShow)
{
return S_OK;
}
STDMETHODIMP WebFilter::RequestNewObjectLayout()
{
return E_NOTIMPL;
}
STDMETHODIMP WebFilter::Invoke(DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pVarResult,
EXCEPINFO * pExcepInfo,
UINT * puArgErr)
{
switch (dispIdMember)
{
case DISPID_AMBIENT_DLCONTROL:
pVarResult->vt = VT_I4;
pVarResult->lVal = DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_NO_SCRIPTS;
break;
}
return S_OK;
}
STDMETHODIMP WebFilter::GetTypeInfoCount(unsigned int FAR* pctinfo)
{
return E_NOTIMPL;
}
STDMETHODIMP WebFilter::GetTypeInfo(unsigned int iTInfo, LCID lcid, ITypeInfo FAR* FAR* ppTInfo)
{
return E_NOTIMPL;
}
STDMETHODIMP WebFilter::GetIDsOfNames(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgDispId)
{
return E_NOTIMPL;
}
Втыкается через
IOleObject *pObj = NULL;
if(SUCCEEDED(web->ControlInterface->QueryInterface(IID_IOleObject, (void **) &pObj)) )
{
pObj->SetClientSite((IOleClientSite*)wf);
pObj->Release();
}
Собирается нормально, а вот в ран-тайме возникают массовые access violations.
...
Собирается нормально, а вот в ран-тайме возникают массовые access violations.
Спасибо большое :)
Спасибо большое :)
Не за что:)
Чтобы был "зачОт" нужно нажать кнопочку - Добавить отзыв.
собственно вопрос, где его можно достать, или если кто может выложите тут сам компонент...:confused::rolleyes:
собственно вопрос, где его можно достать, или если кто может выложите тут сам компонент...:confused::rolleyes:
Вкладка - Internet
При этом галка в Component|Install Packages...|Borland C++ Builder Internet Explorer X Component Package должна быть включена
ЗЫ: такие вопросы нужно задавать в теме "Я начинающий ..."
не подскажешь где можно скачать этот компонент...
З.Ы ещё раз сори за то, что не в ту тему написал...
нормальный дистрибьютив или нет? просто непонятно какой нормальный, а какой нет(
нормальный дистрибьютив или нет? просто непонятно какой нормальный, а какой нет(
Это "нормальный" там точно есть.
А bcbie06.bpl в каталоге $(BCB)\bin есть?