I am trying to add Window.PostMessage listener for JavaScript Window.postMessage inside Atl BHO (c++).
Code for adding event handler..
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;
}
But after executing dispWindow.InvokeN The result.lVal is always -858993460, and addEventListener fails.
Any ideas what is wrong with above code.