您正在寻找IHTMLWindow2::execScript。
您可以IHTMLDocument2
通过执行以下操作来获取指针:
- 打电话
IWebBrowser2::get_Document()
。
- QueryInterface() 的结果
IDispatch
指针IID_IHTMLDocument2
。
您应该能够通过调用对象并执行类似get_parentWindow
的操作来获取 IHTMLWindow2 指针。IHTMLDocument2
下面是一些示例函数。您必须实现IObjectWithSite
并缓存您的站点指针。您可以将其传递给这些函数。
HRESULT Web2FromSite(IUnknown *punkSite, IWebBrowser2 **pWeb2) {
IServiceProvider* psp;
HRESULT hr = punkSite->QueryInterface(IID_IServiceProvider, (void **)&psp);
if (SUCCEEDED(hr))
{
hr = psp->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, (void **)pWeb2);
psp->Release();
}
return hr;
}
HRESULT Doc2FromWeb2(IWebBrowser2 *pWeb2, IHTMLDocument2 **ppDoc2) {
CComPtr<IDispatch> spDisp;
HRESULT hr = pWeb2->get_Document(&spDisp);
if (SUCCEEDED(hr) && spDisp)
{
hr = spDisp->QueryInterface(IID_IHTMLDocument2, (void**)ppDoc2);
} else {
hr = E_FAIL;
}
return hr;
}
HRESULT Doc2FromSite(IUnknown *punkSite, IHTMLDocument2 **ppDoc2) {
CComPtr<IWebBrowser2> spWeb2;
HRESULT hr = Web2FromSite(punkSite, &spWeb2);
if (SUCCEEDED(hr)) {
hr = Doc2FromWeb2(spWeb2, ppDoc2);
}
return hr;
}