проблема с IWebBrowser2::Navigate2

Тема в разделе "WASM.WIN32", создана пользователем f0rk, 22 фев 2009.

  1. f0rk

    f0rk New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2006
    Сообщения:
    18
    проблема такова:
    есть код, вызываемый при событии BeforeNavigate
    VARIAN vtHeaders;
    V_VT(&vtHeaders) = VT_BSTR;
    V_BSTR(&vtHeaders) = SysAllocString(L"Referer: http://microsoft.com/\r\n");
    HRESULT hr = m_spWebBrowser2->Navigate2(&_variant_t("http://mytesturl.com/info.php"), NULL, NULL, NULL, &vtHeaders);
    VariantClear(&vtHeaders);

    так вот вызов Navigate2 завершается ошибкой, соответственно я по новому урлу не иду, а в hr содержится значение 0x80004005
    если же сделать так
    HRESULT hr = m_spWebBrowser2->Navigate2(&_variant_t("http://mytesturl.com/info.php"), NULL, NULL, NULL, NULL);
    то все прекрасно отрабатывает.

    из чего я делаю вывод, что что-то криво сделал с vtHeaders, но вроде все верно. И еще не могу найти описание этой ошибки 0x80004005
     
  2. f0rk

    f0rk New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2006
    Сообщения:
    18
    хм, старый мсдн у меня :)
    оказывается может еще возвращать E_FAIL, вот его и возвращает, но тем не менее непонятно, как же установить свой реферрер, если делаю:
    vtHeaders.vt = VT_BYREF;
    vtHeaders.byref = SysAllocString(L"http://microsoft.com/\r\n");
    то вызов Navigate2 завершается успешно, по урлу я переход делаю, но реферрер по-прежнему не передается :dntknw:
     
  3. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    хм.. VT_BYREF почему? мб vtHeaders.vt = VT_BSTR, а vtHeaders.bstrVal = SysAllocString(L"http://microsoft.com");
     
  4. f0rk

    f0rk New Member

    Публикаций:
    0
    Регистрация:
    25 окт 2006
    Сообщения:
    18
    смотрите первый самый пост. если делаю так как вы говорите, то Navigate2 возвращает E_FAIL
     
  5. Gnil

    Gnil New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2008
    Сообщения:
    41
    Лень проверять, но надо передавать &vtMissing вместо NULL.

    Насчет типов не спорьте: Headers
    [in] A pointer to a VARIANT of type VT_BSTR that contains additional HTTP headers to send to the server. These headers are added to the default Microsoft Internet Explorer headers. For example, headers can specify the action required of the server, the type of data being passed to the server, or a status code. This parameter is ignored if the URL is not an HTTP URL.
    Return Value