BHO HtmlEventObject崩溃

| 我有一个用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的第一个arg是
BSTR
,但是您传递的
wchar_t*
/
unsigned int *
取决于VC编译设置。
BSTR
是系统字符串,预计将通过接收方法释放。 尝试
#define DOM_ANON_STRING(x)          (_bstr_t(x))
pEvtObj->getAttribute(DOM_ANON_STRING(L\"formID\"), 0, &var);
    

要回复问题请先登录注册