c#web页面显示弹窗_C#监听IE文档加载完成、弹窗、JS弹窗、页面跳转

本文介绍了一个使用C#监听IE浏览器窗口注册、弹窗及页面跳转的示例。通过引用mshtml和SHDocVw库,实现了对IE窗口事件的绑定和处理,包括DocumentComplete事件的触发,以及在特定条件下阻止页面导航并替换为新的URL。
摘要由CSDN通过智能技术生成

这个Demo在早段时间有个网友需要做一个相关方面的软件,我给做出来的。很方面,在JS弹窗监听上耗了不少时间。现在均已解决!请勿用作非法商业用途,该软件产生的后果与作者本人无关,特此声明。

由于需要对HTML等对象进行操作,所以需要引用:

using mshtml;

using SHDocVw;

以下是事件绑定和处理的代码:

static ShellWindows shellWindows;

static void Main(string[] args)

{

if (shellWindows == null)

{

shellWindows = new ShellWindows();

}

shellWindows.WindowRegistered += new DShellWindowsEvents_WindowRegisteredEventHandler(Register);

Console.WriteLine("正在监听IE...");

Console.ReadKey();

}

static void Register(int ICookie)

{

for (int i = shellWindows.Count - 1; i >= 0; i--)

{

InternetExplorer ie = shellWindows.Item(i) as InternetExplorer;

string filename = Path.GetFileNameWithoutExtension(ie.FullName).ToLower();

if (filename.Equals("iexplore"))

{

string strUrl = ie.LocationURL;//IE8 url为打开IE的实际路径 但是IE7这里是""只能在

//ie.NavigateComplete2 += new DWebBrowserEvents2_NavigateComplete2EventHandler(BeforeNavigate); break;//因为最后一个一定是最新创建的(自己测试后的结论)注意这里我是从后面遍历的找到最新创建的就退出循环 保证只处理新创建的IE 保证每个实例在这里只遍历一次

ie.NewWindow2 += new DWebBrowserEvents2_NewWindow2EventHandler(ie_NewWindow2);

ie.BeforeNavigate2 += new DWebBrowserEvents2_BeforeNavigate2EventHandler(ie_BeforeNavigate2);

ie.DocumentComplete += new DWebBrowserEvents2_DocumentCompleteEventHandler(ie_DocumentComplete); break;

}

}

}

static void ie_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref object TargetFrameName, ref object PostData, ref object Headers, ref bool Cancel)

{

if (URL.ToString().Contains("baidu"))

{

Console.WriteLine("跳转:" + URL.ToString());

Cancel = true;

object missing = Type.Missing;

((WebBrowser)pDisp).Navigate("//www.fangsi.net", ref missing, ref missing, ref missing, ref missing);

}

}

static WebBrowser wb = new WebBrowser();

static void ie_NewWindow2(ref object ppDisp, ref bool Cancel)

{

ppDisp = wb;

Console.WriteLine("新开页面");

if (wb.LocationURL.ToString().Contains("baidu"))

{

Cancel = true;

object missing = Type.Missing;

wb.Navigate("//www.fangsi.net", ref missing, ref missing, ref missing, ref missing);

}

}

static void ie_DocumentComplete(object pDisp, ref object URL)

{

HTMLDocument doc = (HTMLDocument)((WebBrowser)pDisp).Document;

Console.WriteLine("完成加载:" + doc.title + "(" + URL.ToString() + ")");

}

原创文章,作者:锋哥,如若转载,请注明出处:https://www.fangsi.net/1062.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值