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

Discussion in 'WASM.WIN32' started by f0rk, Feb 22, 2009.

  1. f0rk

    f0rk New Member

    Blog Posts:
    0
    Joined:
    Oct 25, 2006
    Messages:
    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

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

    barton New Member

    Blog Posts:
    0
    Joined:
    Jul 19, 2008
    Messages:
    164
    Location:
    Czechoslovakia
    хм.. VT_BYREF почему? мб vtHeaders.vt = VT_BSTR, а vtHeaders.bstrVal = SysAllocString(L"http://microsoft.com");
     
  4. f0rk

    f0rk New Member

    Blog Posts:
    0
    Joined:
    Oct 25, 2006
    Messages:
    18
    смотрите первый самый пост. если делаю так как вы говорите, то Navigate2 возвращает E_FAIL
     
  5. Gnil

    Gnil New Member

    Blog Posts:
    0
    Joined:
    Aug 8, 2008
    Messages:
    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