проблема такова: есть код, вызываемый при событии 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
хм, старый мсдн у меня оказывается может еще возвращать E_FAIL, вот его и возвращает, но тем не менее непонятно, как же установить свой реферрер, если делаю: vtHeaders.vt = VT_BYREF; vtHeaders.byref = SysAllocString(L"http://microsoft.com/\r\n"); то вызов Navigate2 завершается успешно, по урлу я переход делаю, но реферрер по-прежнему не передается
хм.. VT_BYREF почему? мб vtHeaders.vt = VT_BSTR, а vtHeaders.bstrVal = SysAllocString(L"http://microsoft.com");
Лень проверять, но надо передавать &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