отключение картинок и прочего в Webbrowser

Тема в разделе "MS Visual C++", создана пользователем archicad78, 23 май 2006.

Статус темы:
Закрыта.
  1. archicad78

    archicad78 Гость

    у меня консольное приложение
    создал com-компонент, он загружает страничку, а я её буду по-своему разбирать
    но компонент без всяких вопросов, тянет все картинки, скрипты, ...
    как заставить его не тянуть это, всё равно у меня нет графического интерфейса
     
  2. grigsoft

    grigsoft Well-Known Member

    Регистрация:
    15 ноя 2005
    Сообщения:
    735
    Симпатии:
    0
    Может проще взять код который сам грузит страничку через WinInet (http://www.rsdn.ru/article/inet/wininet.xml)?
    Зачем использовать тяжелое оружие, чтобы просто выкачать чистый текст?
     
  3. archicad78

    archicad78 Гость

    он поддерживает cookie, https, ...
     
  4. Barmutik

    Barmutik Гость

    Откачка картинок и скриптов отключается в COM объекте браузере .. так что просьба почитать MSDN
     
  5. archicad78

    archicad78 Гость

    Для: Barmutik
    ткни носом, ну не нашёл я

    вот есть m_pBrowser
    как его заставить ни принимать картинки!
    я новичок, просто надо пример, чтобі многое потом стало понятно!
    спасибо

    (я недавно мигрировал с Linux)
     
  6. archicad78

    archicad78 Гость

    The WebBrowser Control gives you control over what it downloads,
    displays, and executes. To gain this control, you need to implement
    your host's IDispatch so it handles DISPID_AMBIENT_DLCONTROL.
    When the WebBrowser Control is instantiated, it will call your
    IDispatch::Invoke with this ID. Set pvarResult to a combination
    of following flags, using the bitwise OR operator, to indicate
    your preferences.


    STDMETHODIMP CAtlBrCon::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 DISP_E_MEMBERNOTFOUND;
    }

    return S_OK;
    }


    как вышесказанное МСДН'ом добавить в ниже приведённую прогу
    (я новичок, просто этот пример поможет разобраться с основным)
    СПАСИБО!!

    int main( int argc, char ** argv )
    {

    printf( "I started!\n" );

    IWebBrowser2* m_pBrowser;
    HRESULT hr ;
    BSTR m_string=NULL;
    CoInitialize(NULL);
    hr = CoCreateInstance (CLSID_InternetExplorer, NULL, CLSCTX_LOCAL_SERVER,IID_IWebBrowser2, (LPVOID *)&m_pBrowser);
    if(hr!=S_OK) {
    m_pBrowser=NULL;
    }
    VARIANT_BOOL bOffline = true;
    m_pBrowser->put_Offline( bOffline );

    IOleControl * pOleControl;
    hr = m_pBrowser->QueryInterface( __uuidof( IOleControl ), (void**)&pOleControl );
    if ( SUCCEEDED( hr ) ) {
    pOleControl->OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL);
    pOleControl->Release();
    }

    char * url = "http://host/";
    _variant_t v_url;
    _variant_t null;
    v_url.SetString( url );
    hr = m_pBrowser->Navigate2( &v_url, &null, &null, &null, &null );



    BOOL bReady=FALSE;
    while(bReady==FALSE) {
    READYSTATE state;
    m_pBrowser->get_ReadyState(&state);
    if(state==READYSTATE_COMPLETE) {
    VARIANT_BOOL b;
    m_pBrowser->get_Busy(&:);
    if (b==VARIANT_FALSE)
    bReady=TRUE;
    else {
    printf( "Sleeping inner ELSE\n" );
    Sleep(1000);
    }
    }
    else {
    printf( "Sleeping outer ELSE\n" );
    Sleep(1000);
    }
    }


    IDispatch* pmDisp;
    IDispatch* ret_pDisp=NULL;
    hr = m_pBrowser->get_Document(&pmDisp);
    if (pmDisp == NULL )
    printf( "Error while m_pBrowser->get_Document(&pmDisp)\n" );

    IHTMLDocument2* pHTMLDocument2;
    hr = pmDisp->QueryInterface( IID_IHTMLDocument2,(void**)&pHTMLDocument2 );
    if (hr != S_OK)
    return NULL;

    IHTMLElement * p;
    hr = pHTMLDocument2->get_body(&p);
    if (hr != S_OK)
    return NULL;

    BSTR astr;
    hr = p->get_innerHTML(&astr);
    wprintf( L"result=\"%s\"\n", astr );

    pHTMLDocument2->Release();
    pmDisp->Release();

    m_pBrowser->Release();


    printf( "I stoped!\n" );
    return 0;
    }
     
  7. Barmutik

    Barmutik Гость

    Как оно всё просто на самом деле .. я только недавно постил похожий пример .. правда в Delphi ветку...
     
  8. archicad78

    archicad78 Гость

    Для: Barmutik

    Так подскажи если просто
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей