在 web 按钮上有一个按钮执行 JS windows.postmessage 并发送一些数据。在 C# bho 中,我想捕获这些数据并调用一些本地服务。我需要如何做到这一点的线索。
- 我们可以在 C# 中直接处理这个消息事件吗?会怎么样?
- 我们可以从 javascript 调用 BHO 方法吗?所以我们可以在网页中注入这个事件处理程序,它会调用 bho 函数。如果我们无法在 C# 中捕获 Windows 发布消息事件,就会出现这种情况。
在 web 按钮上有一个按钮执行 JS windows.postmessage 并发送一些数据。在 C# bho 中,我想捕获这些数据并调用一些本地服务。我需要如何做到这一点的线索。
.
HRESULT AddProperty(SHDocVw::IWebBrowser2* pBrowser, _bstr_t bstrName, _variant_t varValue)
{
CComQIPtr<IHTMLDocument> spDoc = pBrowser->Document;
CComPtr<IDispatch> spScript;
spDoc->get_Script(&spScript);
_variant_t varResult;
HRESULT hr = spScript.GetPropertyByName(OLESTR("window"), varResult.GetAddress());
CComQIPtr<IDispatchEx> spScriptEx = varResult;
DISPID id;
hr = spScriptEx->GetDispID(bstrName), fdexNameEnsure, &id);
if (SUCCEEDED(hr))
{
DISPID propid = DISPID_PROPERTYPUT;
DISPPARAMS dp = {NULL, NULL, 1, 1};
dp.rgdispidNamedArgs = &propid;
dp.rgvarg = &varValue;
hr = spScriptEx->InvokeEx(id, LOCALE_USER_DEFAULT, DISPATCH_PROPERTYPUT, &dp, NULL, NULL, NULL);
}
return hr;
}