如何取到以showModalDialog方式打开的页面的WebBrowser?
操作目的:取到当前打开页面的WebBrowser。
问题描叙:如果当前页面是以window.open的方式打开,是可以通过如下代码成功取到当前窗口的WebBrowser的;但是如果当前页面是以showModalDialog的方式打开的话,利用下面的代码的时候就会报:Interface不支持的exception。(是不是dialog里的不是WebBrowser了?)
请各位大虾赐教点拨!
public static IWebBrowser2 getIWebBrowser2(Object obj)
{
try
{
//from shlguid.h
Guid SID_STopLevelBrowser = new Guid(0x4C96BE40, 0x915C, 0x11CF, 0x99,0xD3,0x00, 0xAA, 0x00, 0x4A, 0xE8, 0x37);
Guid SID_SWebBrowserApp = typeof(SHDocVw.IWebBrowserApp).GUID;
Guid guidIServiceProvider = typeof(IServiceProvider).GUID;
Guid guidIWebBrowser2 = typeof(SHDocVw.IWebBrowser2).GUID;
object objIServiceProvider2;
object objIWebBrowser2;
Type typeIOleObject = obj.GetType().GetInterface("IOleObject",true);
//call the method on that interface
object oleClientSite = typeIOleObject.InvokeMember("GetClientSite",BindingFlags.Instance|BindingFlags.InvokeMethod|BindingFlags.Public,null,obj,null);
IServiceProvider serviceProvider = oleClientSite as IServiceProvider;
serviceProvider.QueryService(ref SID_STopLevelBrowser,
ref guidIServiceProvider, out objIServiceProvider2);
serviceProvider = objIServiceProvider2 as IServiceProvider;
serviceProvider.QueryService(ref SID_SWebBrowserApp,ref guidIWebBrowser2, out objIWebBrowser2);
IWebBrowser2 webBrowser = objIWebBrowser2 as IWebBrowser2;
return webBrowser;
}
catch(Exception ex)
{
throw ex;
}
}
}
}