如何用SHDocVw.InternetExplorer控制IE的子页面?

ydy_csdn 2016-08-19 04:00:12
private void button1_Click(object sender, EventArgs e)
{
SHDocVw.InternetExplorer ieObj = new SHDocVw.InternetExplorer();
ieObj.Navigate("http://www.baidu.com/");
ieObj.AddressBar = false;
ieObj.ToolBar = 0;
ieObj.Visible = true;
}
这样打开的IE,工具栏是没有了,但在IE中点击链接打开新窗口时,上面的设置失效了,如何让子页面也没有工具栏呢?
我对 ieObj 设置了NewWindow2 、NewWindow3、NewProcess、DocumentComplete、NavigateComplete2、NavigateComplete2等事件都不顶事。NewWindow2 和NewWindow3的代码如下:
IE.NewWindow2 += (ref object ppDisp, ref bool Cancel) =>
{
//这里不知道怎么取当前的IE窗口(知道的大侠请告之),所以只好操作所有的IE窗口。但是这个事件是在新窗口打开之前就触发了,所以这样写也没用。
SHDocVw.ShellWindows sws = new SHDocVw.ShellWindows();
foreach (SHDocVw.InternetExplorer iew in sws)
{
if (System.IO.Path.GetFileNameWithoutExtension(iew.FullName).ToLower() == "iexplore")
{ iew .ToolBar = 0; }
}
}
IE.NewWindow3 += (ref object ppDisp, ref bool Cancel, uint dwFlags, string bstrUrlContext, string bstrUrl) =>
{
//这个事件在.net4.0以上不会被触发
SHDocVw.ShellWindows sws = new SHDocVw.ShellWindows();
foreach (SHDocVw.InternetExplorer iew in sws)
{
if (System.IO.Path.GetFileNameWithoutExtension(iew.FullName).ToLower() == "iexplore")
{ iew .ToolBar = 0; }
}
}

所以,问题的核心是:怎么才能取到子网面的窗口对象,即新窗口对应的SHDocVw.InternetExplorer 对象。
请不要用WebBrowser控件来解答,我就是想操作IE窗口而不是WebBrowser控件。当然,不用SHDocVw.InternetExplorer 而用其它技术也能达到要求的方法都请告之在下,谢谢了!

我想到一个笨方法就是:监视IE的进程,一旦发现新IE进程就执行我需要逻辑,但网上找到的方法都是要取得所有进程后再列遍寻找指定的进程,这样就必需要用到循环,太费CPU资源了,有没有更好的方法来监视进程?
...全文
234 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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