gpt4 book ai didi

c++ - BHO HtmlEventObject 崩溃

转载 作者:行者123 更新时间:2023-11-28 08:20:23 24 4
gpt4 key购买 nike

我有一个用 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 编译设置。< br/>BSTR 是一个系统字符串,预计会被接收方法释放。

尝试

#define DOM_ANON_STRING(x)          (_bstr_t(x))
pEvtObj->getAttribute(DOM_ANON_STRING(L"formID"), 0, &var);

关于c++ - BHO HtmlEventObject 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6021188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com