CComDispatchDriver InvokeN以result.lVal = -858993460返回Result

时间:2017-04-06 18:36:11

标签: javascript c++ atl bho browser-extension

我正在尝试在Atl BHO(c ++)中为JavaScript Window.postMessage添加Window.PostMessage侦听器。

添加事件处理程序的代码..

DISPID dispidAddEventListener = -1;
    if (FAILED(dispWindow.GetIDOfName(CComBSTR("addEventListener"), &dispidAddEventListener)))
    {
    //failed..
    return;
}
CListener* eventHandler;
if (FAILED(CListener::Create(this, &eventHandler)))
{
    // Could not create the event sink
    return;
}
IDispatch* eventHandlerAsDispatch;
if (FAILED(eventHandler->QueryInterface(IID_IDispatch, reinterpret_cast<void**>(&eventHandlerAsDispatch))))
{
    //Could not get an IDispatch pointer for the event sink
    return;
}
CComVariant result;
CComVariant invokeParams[3];
invokeParams[0] = CComVariant(false);
invokeParams[1] = CComVariant(eventHandlerAsDispatch);
invokeParams[2] = CComVariant(L"message");
if (FAILED(dispWindow.InvokeN(dispidAddEventListener, invokeParams, 3, &result)))
{
    //Could not invoke the addEventListener method
    return;
}
if (FAILED(result.lVal)) //failing here...
{
    return;
}

但执行 dispWindow.InvokeN 后,result.lVal始终为-858993460,而addEventListener失败。

上述代码有什么问题。

0 个答案:

没有答案