BHO HtmlEventObject crashes
BHO HtmlEventObject crashes
我有一个用C++编写的浏览器帮助程序对象,但是在收到OnHelp HtmlEvent时遇到问题。
当我尝试访问属性时,浏览器崩溃了。
VARIANT_BOOL STDMETHODCALLTYPE OnHelp(IHTMLEventObj2 *pEvtObj)
{
std::cout << "OnHelp Event" << std::endl;
if(pEvtObj != NULL) {
VARIANT var;
pEvtObj->getAttribute(L"formID", 0, &var);
std::cout << (char*)var.bstrVal << std::endl;
}
else {
std::cout << "PELEM = NULL" << std::endl;
}
return VARIANT_TRUE;
}
由于某种原因,它在getAttribute行上崩溃了?在 C# 中执行此操作时,它可以完美运行。我希望有人可以帮助我解决这个问题。
编辑:
真正的问题是我需要使用IHTMLEventObj然后查询IHTMLEventObj2的参数。
VARIANT_BOOL STDMETHODCALLTYPE OnHelp(IHTMLEventObj *pEvtObj)
{
IHTMLEventObj2 *pEvtObj2;
pEvtObj->QueryInterface(IID_IHTMLEventObj2, (void**)&pEvtObj2);
if(pEvtObj2 != NULL) {
VARIANT var;
pEvtObj2->getAttribute(CComBSTR(L"url"), 0, &var);
std::cout << _bstr_t(var.bstrVal) << std::endl;
}
else {
std::cout << "PELEM = NULL" << std::endl;
}
return VARIANT_TRUE;
}
getAttribute 的第一个参数是一个BSTR
,但你传递一个wchar_t*
/unsigned int *
取决于 VC 编译设置。
BSTR
是一个系统字符串,预期由接收方法解除分配。
尝试
#define DOM_ANON_STRING(x) (_bstr_t(x))
pEvtObj->getAttribute(DOM_ANON_STRING(L"formID"), 0, &var);
相关文章:
- JNI getObjectClass crashes VM
- dll + boost + VS2015 + WinXP == crashes
- Cocos2d Firebase Admob crashes
- Directx11 - DeviceContext::ClearRenderTargetView crashes
- OpenCV Harris Corner Detection crashes
- Qt Program Crashes aftes QTextEdit 通过 QTextCursor 进行修改
- OpenGL glBufferStorage crashes
- vector.push_back() crashes
- wxToggleButton::GetValue() crashes
- ListView_GetItemText crashes
- WaitForSingleObject crashes
- SGS4 android 4.4.2 - OGL ES2 crashes
- QAbstractListModel crashes
- RegisterClassEx crashes - C++
- ShellExecute crashes
- OpenCL: cl::getDevices crashes
- _strset_s crashes
- BHO HtmlEventObject crashes
- vswprintf crashes