このコードを使用して、C++ の IWebBrowser2 Web ブラウザーでイベントをシンクしています。
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++ 例外: メモリ位置 0x0012ed50 で _com_error。
DocumentComplete の行にコメントを付けると、エラーは表示されません。また、try..catch ブロックは例外をキャッチしません。
私がやろうとしているのは、 Variant * url を使用して std::string と比較することです。
これどうやってするの?