activex怎么调用网页中的js?
如题
最好有EX
[解决办法]
转的,希望有用
很多网友问到,在HTML的页面中放置一个COM对象,这个对象该如何调用页面中的脚本函数的问题,本人近日也因为工作需要实现这样的功能,在网上搜索后,获得了很多帮助,但并没有发现完整的实现。本文描述了实现过程中的几个要点,同时提供一个示例工程的下载。
1——
给接口添加一个方法:
方法名:SetClientSite
参数:IOleClientSite* pClientSite
2——
给上面的方法加以实现(在相应的类中实现,已经自动生成了框架):
STDMETHODIMP CIrDav::SetClientSite(IOleClientSite * pClientSite)
{
// TODO: 在此添加实现代码
HRESULT hr = S_OK;
IServiceProvider *isp, *isp2 = NULL;
if (!pClientSite)
{
COMRELEASE(m_spBrowser);
}
else
{
try
{
hr = pClientSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&isp));
if (FAILED(hr))
throw("");
hr = isp->QueryService(SID_STopLevelBrowser, IID_IServiceProvider, reinterpret_cast<void **>(&isp2));
if (FAILED(hr))
throw("");
hr = isp2->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void **>(&m_spBrowser));
if (FAILED(hr))
throw("");
hr=this->m_spBrowser->get_Document((IDispatch**)&m_spDoc);
if(FAILED(hr))
throw("");
}
catch(LPCTSTR lpszErr)
{
if(CString(lpszErr)!="")
MessageBox(lpszErr);
hr=S_OK;
}
catch(...)
{
MessageBox("未知错误");
hr=S_OK;
}
COMRELEASE(isp);
COMRELEASE(isp2);
}
return hr;
}
通过这步的操作,我们就获得了控件所在Web页面的BROWSER对象指针和相应的DOCUMENT对象指针。
通过这些BROWSER和DOCUMENT对象指针,我们可以设置窗口的很多属性,比如菜单、全屏、工具栏等的显示和DOCUMENT的背景颜色等等。
这个方法参见MSDN:http://support.microsoft.com/support/kb/articles/Q257/7/17.ASP
3——
获得脚本,通过m_spDoc(DOCUMENT对象)的方法get_Script可以获得页面中的脚本对象:
CComPtr<IDispatch> pScript;
hr=this->m_spDoc->get_Script(&pScript);
[解决办法]
upup
[解决办法]
如果js是自己写的话,可以用连接点,这个方便一些.
[解决办法]