1

I am able to get JavaScript listener for window.postMessage working inside ATL BHO by following this article. Javascript post message event handler in ATL C++ BHO

But How to i retrieve message data out of it ?

JavaScript Code:

window.postMessage({
            type: 'data_received',
                  Cross : {
            data: data_Id
            }
            }, '*');

Event listener:

STDMETHODIMP CListener::InvokeEx(DISPID dispidMember, LCID, WORD, DISPPARAMS* params, VARIANT*, EXCEPINFO*, IServiceProvider*)
{
HRESULT hr;

::MessageBox(NULL, L"Hello", L"World", MB_OK);

if (dispidMember != DISPID_VALUE)
{
    return DISP_E_MEMBERNOTFOUND;
}

CComDispatchDriver dispDomEvent(params->rgvarg[1].pdispVal);
if (!dispDomEvent)
{
    Logger::LogInfo(L"Could not get the DOM event");
    return E_INVALIDARG;
}

CComVariant eventTarget;
hr = dispDomEvent.GetPropertyByName(L"target", &eventTarget);
if (FAILED(hr))
{
    Logger::LogInfo(L"Could not get the target for the DOM event: 0x%x", hr);
    return hr;
}
}
Community
  • 1
  • 1
User123456
  • 179
  • 1
  • 5
  • 14
  • Try to read the `data` property of the `dispDomEvent` object. One way to do it is to first `QueryInterface` the object for the `IDOMMessageEvent` interface. See https://msdn.microsoft.com/en-us/library/ff975936.aspx – manuell Jul 12 '17 at 09:24

0 Answers0