C#监听IE文档加载完成、弹窗、JS弹窗、页面跳转

C#监听IE文档加载完成、弹窗、JS弹窗、页面跳转
这个Demo在早段时间有个网友需要做一个相关方面的软件,我给做出来的。很方面,在JS弹窗监听上耗了不少时间。现在均已解决!请勿用作非法商业用途,该软件产生的后果与作者本人无关,特此声明。
由于需要对HTML等对象进行操作,所以需要引用:
[code lang=”csharp”]using mshtml;
using SHDocVw;
[/code]
以下是事件绑定和处理的代码:
[code lang=”csharp”]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() + ")");
}[/code]

本博客所有文章如无特别注明均为原创

如果觉得对你有帮助,可以通过下方打赏对作者表示鼓励

本文采用知识共享署名-非商业性使用-相同方式共享

如若转载,请注明出处:https://www.fangsi.net/1062.html

(3)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2015年1月16日 09:49
下一篇 2015年8月15日 23:07

相关推荐

发表评论

登录后才能评论