Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка без картинок в CppWebBroser... как?

11K
02 ноября 2006 года
Joe Black
49 / / 29.10.2006
Доброго времени суток! Задача в следующем:
при нажатии на кнопку нужно, чтоб в CppWebBrouser
грузилась страничка без картинок. Подскажите пожлалуйста код.
Спасибо.
11K
04 ноября 2006 года
Joe Black
49 / / 29.10.2006
Разве никто не сталкивался с такой проблемой?
257
04 ноября 2006 года
kosfiz
1.6K / / 18.09.2005
CppWebBrowser работает с настройками IExplorer'а, поэтому если хочешь, чтоб картинки пропали надо лезть в реестр HKCU\Software\Microsoft\Internet Explorer\Main и там смотреть Display Inline Images, если no то не показывает, если yes - показывает картинки. тока iexplorer'у рестарт нужен, если ручками в реестре самому изменить. так что ты попробуй как-нить после изменения значения заставить WebBrowser перегрузить настройки.
11K
05 ноября 2006 года
Joe Black
49 / / 29.10.2006
Спасибо, попробую.
246
07 ноября 2006 года
GIZMO
1.8K / / 30.07.2004
[QUOTE=kosfiz]CppWebBrowser работает с настройками IExplorer'а, поэтому если хочешь, чтоб картинки пропали [/QUOTE]
а так же если хочешь, чтоб они пропали у IE...тогда
[QUOTE=kosfiz]
надо лезть в реестр HKCU\Software\Microsoft\Internet Explorer\Main...[/QUOTE]
24K
28 февраля 2007 года
Sklizzy
11 / / 28.02.2007
Насколько я понял, движок ИЕ поддерживает интерфейсы для контроля того, что скачивается и исполняется на странице. Более подробно об этом можно почитать на http://msdn.microsoft.com/workshop/browser/overview/overview.asp, абзац Download Control.

В связи с чем у меня самого возникает два вопроса ;)

1. Как подключиться к событиям TCppWebBrowser в Borlnad C++ Builder?
2. Как реализовать перехват указанного в статье события?

Прошу сильно не пинать, в этой области я, как можно заметить, новичек. Буду весьма признателен за ответы!
246
28 февраля 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Sklizzy
Насколько я понял, движок ИЕ поддерживает интерфейсы для контроля того, что скачивается и исполняется на странице. Более подробно об этом можно почитать на http://msdn.microsoft.com/workshop/browser/overview/overview.asp, абзац Download Control.


Ну, так ты нам предлагаешь почитать и перевести, что-ли?


Цитата: Sklizzy

1. Как подключиться к событиям TCppWebBrowser в Borlnad C++ Builder?


Они выведены в ObjectInspector.

Цитата: Sklizzy

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.

24K
02 марта 2007 года
Sklizzy
11 / / 28.02.2007
OK, допустим, IOleControlSite я реализовал в отдельном классе, а как подвязать его к конкретному объекту TCppWebBrowser?

Прошу прощения за ламерский вопрос.
246
02 марта 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Sklizzy
OK, допустим, IOleControlSite я реализовал в отдельном классе, а как подвязать его к конкретному объекту TCppWebBrowser?



Код:
TCustomDownLoad::TCustomDownLoad(TCppWebBrowser* WebBrowser)
        : 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();
        }
    }
    ...
}
25K
07 марта 2007 года
Bobbie
5 / / 07.03.2007
Только начал разбиратся с компонентой веб-браузера и не очень понимаю что к чему.
Увидел идею переопределения стандартного метода 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"));
}
246
08 марта 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Bobbie
Только начал разбиратся с компонентой веб-браузера и не очень понимаю что к чему.
Увидел идею переопределения стандартного метода Invoke у IDispatch, для управления показом-отключенем показа картинок, на одном форуме по Delphi (и оно у них похоже работает), перенес ее в Билдер, но у меня не фурычит.
Ругается про ассес виолейшн подолгу.
Ругается даже если просто создаю пустой класс на основе TCppWebBrowser и пытаюсь делать Navigate им :(


Наследоваться от TCppWebBrowser не получится (no comment...), наследуй свой класс от IOleClientSite. IDispatch и втыкай через IOleObject::SetClientSite

24K
09 марта 2007 года
Sklizzy
11 / / 28.02.2007
А не подскажете, в чем кривизна моей реализации?

Код:
class WebFilter : IOleClientSite, IDispatch
{
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;
}


Втыкается через

 
Код:
WebFilter *wf = new WebFilter();
        IOleObject *pObj = NULL;


        if(SUCCEEDED(web->ControlInterface->QueryInterface(IID_IOleObject, (void **) &pObj)) )
        {
            pObj->SetClientSite((IOleClientSite*)wf);
            pObj->Release();
        }


Собирается нормально, а вот в ран-тайме возникают массовые access violations.
246
09 марта 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Sklizzy
А не подскажете, в чем кривизна моей реализации?
...
Собирается нормально, а вот в ран-тайме возникают массовые access violations.


http://forum.codenet.ru/showthread.php?t=26390&page=2#13

25K
09 марта 2007 года
Bobbie
5 / / 07.03.2007
Зачет!
Спасибо большое :)
246
09 марта 2007 года
GIZMO
1.8K / / 30.07.2004
Цитата: Bobbie
Зачет!
Спасибо большое :)


Не за что:)
Чтобы был "зачОт" нужно нажать кнопочку - Добавить отзыв.

24K
09 марта 2007 года
Sklizzy
11 / / 28.02.2007
Мда, действительно, теперь все понятно ;) GIZMO - respect!
46K
11 января 2009 года
novi4ok123
4 / / 03.01.2009
Доброго времени суток форумчанам, у меня возник такой вопрос, в моей версии СИ билдер 6 нету компонента CppWebBrouser...

собственно вопрос, где его можно достать, или если кто может выложите тут сам компонент...:confused::rolleyes:
246
12 января 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: novi4ok123
Доброго времени суток форумчанам, у меня возник такой вопрос, в моей версии СИ билдер 6 нету компонента CppWebBrouser...

собственно вопрос, где его можно достать, или если кто может выложите тут сам компонент...:confused::rolleyes:


Вкладка - Internet
При этом галка в Component|Install Packages...|Borland C++ Builder Internet Explorer X Component Package должна быть включена


ЗЫ: такие вопросы нужно задавать в теме "Я начинающий ..."

46K
12 января 2009 года
novi4ok123
4 / / 03.01.2009
конечно спасибо, но у меня нету этого дела, вообще отсутствует такой пункт в компонентс...
не подскажешь где можно скачать этот компонент...

З.Ы ещё раз сори за то, что не в ту тему написал...
92
12 января 2009 года
Тень Пса
2.2K / / 19.10.2006
есть, только что смотрел. возьми нормальный дистриб, или смотри внимательнее.
46K
12 января 2009 года
novi4ok123
4 / / 03.01.2009
а C++ Builder Enterprise
нормальный дистрибьютив или нет? просто непонятно какой нормальный, а какой нет(
246
13 января 2009 года
GIZMO
1.8K / / 30.07.2004
Цитата: novi4ok123
а C++ Builder Enterprise
нормальный дистрибьютив или нет? просто непонятно какой нормальный, а какой нет(


Это "нормальный" там точно есть.
А bcbie06.bpl в каталоге $(BCB)\bin есть?

46K
17 января 2009 года
novi4ok123
4 / / 03.01.2009
всё, нашёл просто переутсановил кое что и всё стало работать, спасибо за помощь..)))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог