如何取到以showModalDialog方式打开的页面的WebBrowser?

CuZnRong 2005-05-10 11:15:15
操作目的:取到当前打开页面的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;
}
}
}
}
...全文
229 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
CuZnRong 2005-05-11
  • 打赏
  • 举报
回复
嵌到Frameset或iFrame里面还是不行啊,请各位高人再赐教一些高招!
wjcking 2005-05-10
  • 打赏
  • 举报
回复
up
whyxx 2005-05-10
  • 打赏
  • 举报
回复
帮你顶
whyxx 2005-05-10
  • 打赏
  • 举报
回复
上面的方法好像都不行嘛.
5461339 2005-05-10
  • 打赏
  • 举报
回复
up
孟子E章 2005-05-10
  • 打赏
  • 举报
回复
http://dotnet.aspx.cc/ShowDetail.aspx?id=49ML4AO8-5PB3-4KNY-NJZD-LJOIOXV4M1X4
fengfangfang 2005-05-10
  • 打赏
  • 举报
回复
我遇到这种情况,解决的办法是创建一个Frame页面,在Frame页面中再把你的弹出的页面显示出来。
这时,里面的代码就不会报错了..

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧