我正在使用此代码在 C++ 上的 IWebBrowser2 网络浏览器中接收事件:
STDMETHODIMP AdviseSink::Invoke(DISPID dispIdMember,
REFIID riid,
LCID lcid,
WORD wFlags,
DISPPARAMS* pDispParams,
VARIANT* pVarResult,
EXCEPINFO* pExcepInfo,
UINT* puArgErr)
{
if (!pDispParams)
return DISP_E_PARAMNOTOPTIONAL;
switch (dispIdMember)
{
case DISPID_DOCUMENTCOMPLETE:
{
DocumentComplete(pVarResult);
return S_OK;
}
case DISPID_NAVIGATECOMPLETE2:
return S_OK;
default:
return DISP_E_MEMBERNOTFOUND;
}
return S_OK;
}
void DocumentComplete(VARIANT *url)
{
std::string strValue = (char*)_bstr_t(url);
}
调用 (void)DocumentComplete 时出现此错误:
* webhost.exe 中 0x7c812afb 处未处理的异常:Microsoft C++ 异常:_com_error 在内存位置 0x0012ed50。*
如果在 DocumentComplete 上注释该行,则不会显示任何错误。也 try..catch 块不会捕获异常。
我想做的是使用 Variant * url 将其与 std::string 进行比较。
我怎样才能做到这一点?