Javascript 如何检索ATL BHO C++;

Javascript 如何检索ATL BHO C++;,javascript,c++,atl,bho,browser-extension,Javascript,C++,Atl,Bho,Browser Extension,通过阅读本文,我能够在ATL BHO内部获得window.postMessage的JavaScript侦听器 但是如何从中检索消息数据呢 JavaScript代码: window.postMessage({ type: 'data_received', Cross : { data: data_Id } }, '*'); 事件侦听器: STDMETHODIMP C

通过阅读本文,我能够在ATL BHO内部获得window.postMessage的JavaScript侦听器

但是如何从中检索消息数据呢

JavaScript代码:

window.postMessage({
            type: 'data_received',
                  Cross : {
            data: data_Id
            }
            }, '*');
事件侦听器:

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;
}
}

尝试读取
dispDomEvent
对象的
data
属性。一种方法是首先
QueryInterface
IDOMMessageEvent
接口查询对象。看见