lidian009 2007-9-22 10:42
如何调用ActiveX网页中的JavaScript函数
前言
很多网友问到,在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
{
lidian009 2007-9-22 10:42
hr = pClientSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **> (
lidian009 2007-9-22 10:42
通过这步的操作,我们就获得了控件所在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(
lidian009 2007-9-22 10:42
dispparams.cNamedArgs = 0;
EXCEPINFO excepInfo;
memset(