1. 首页
  2. 程序生涯
  3. .NET

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

C#监听IE文档加载完成、弹窗、JS弹窗、页面跳转
这个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

发表评论

登录后才能评论

联系我们

在线咨询:点击这里给我发消息

邮件:service@fangsi.net

工作时间:周一至周五,9:30-18:30,节假日休息