这个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

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

  1. iframe 监听内部接口是否加载完成_低成本0基础打造自己的app之uni-app请求接口以及生命周期函数...

    引言 此教程为教你怎么用WordPress开发一个属于你自己的app(小程序) 前面我们讲解了怎么用WP开发一个首页幻灯片接口(低成本0基础开发app之开发首页幻灯片接口),本来这一节中我们应该讲解如 ...

  2. vue监听滚动到底部加载更多

    整理之前做过的一个vue滚动到底部的加载显示更多功能,后台已经分好了页就剩前端渲染 主要参数pageSize 每页数量(这里默认10) pageNum 页数,能用代码说的就不吹泡泡了直接上代码: 一. ...

  3. vue3 watch监听在组件初次加载的时候执行

    设置参数immediate为true,组件初次加载就会触发一次监听 watch( () => props.name, (newValue, oldValue) => { console.l ...

  4. linux下nginx监听443端口 重新加载配置不生效,需要重启nginx

    在nginx里放开443的监听,执行 nginx -s reload 命令,访问https不生效 需kill调nginx的进程重新后方能添加443端口的监听 参考 https://blog.csdn. ...

  5. Android——RecyclerView自定义OnScrollListener实现下拉刷新监听,上拉加载更多功能

    目录 [前言] 1.OnScrollListener滑动事件监听抽象类 2.利用onScrollStateChanged及onScrolled方法实现下拉刷新及上拉加载更多

  6. 监控页面后退前进,浏览器文档加载事件之pageshow、pagehide

    输入密码后,点击查看协议,然后返回注册页面,密码输入栏为空,应该显示默认提示信息"请设置登录密码",情况如下 页面结构: <div class="inputwrap ...

  7. 计算机页面边框怎么设置,[计算机]在Word2003文档中设置页面边框.doc

    [计算机]在Word2003文档中设置页面边框.doc 上传人:max****ui 文档编号:14044395 上传时间:2019-01-31 格式:DOC 页数:4 大小:319.68KB 下载提示 ...

  8. html资源加载前触发事件,jquery页面加载时触发ready()事件

    ready()事件类似于onLoad()事件,但前者只要页面的DOM结构加载后便触发,而后者必须在页面全部元素加载成功才触发,ready()可以写多个,按顺序执行.此外,下列写法是相等的: $(doc ...

  9. js 监听 安卓事件_百行代码实现js事件监听实现跨页面数据传输

    百行代码实现js事件监听实现跨页面数据传输 使用场景 类似消息队列的使用场景,支持同页面和跨页面通信,发送消息和接收消息 技术原理 跨页面通信: 基于事件监听,通过监听 storage事件监听回调机制 ...

最新文章

  1. 一个经典例子让你彻彻底底理解java回调机制
  2. model.fit以及model.fit_generator区别及用法
  3. python框架django的数据库的正向生成和反向生成
  4. 使用Java实现K-Means聚类算法
  5. zoj 1074 To the MAX
  6. java文字旋转90度_菜鸟求助:在 JAVA APPLET 里如何旋转 90 度显示一个字符?
  7. 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  8. SSH启动失败解决方法
  9. mysql里类似sequence_MySql中实现类似Oracle的Sequence方案
  10. android root su sticky bit
  11. moodle环境安装linux,在Ubuntu 18.04/Debian 9上安装Moodle的步骤
  12. 2021年Web前端开发的趋势有哪些
  13. CUDA编程-02: 初识CUDA编程
  14. 番外9福冈·狂野老司机告诉你如果装AI·1· ——混合现实科幻《地与光》
  15. css背景图铺满后图片变模糊的解决办法
  16. TapTap实习两周总结
  17. Hadoop MapReduce Job 相关参数设置 概念介绍与理解
  18. 怎样做优化才能提升网站的SEO排名?
  19. python推箱子代码详细讲解_Python使用tkinter模块实现推箱子游戏
  20. Debug Hacks (1): 理解用GOT/PLT调用函数的原理

热门文章

  1. 欧氏空间内积定义_线性代数 (8) -- 欧式空间 (让生活大不同)
  2. java selectcommand_“对于不返回任何基表信息的 SelectCommand 不支持动态SQL生成”-奇怪的错误,不知道原因! | 学步园...
  3. linux搭建mcpe服务器_技术|如何搭建“我的世界”服务器
  4. ace unlock 苹果解锁_【曝光】苹果iPhone最新专利:全屏指纹解锁,保留人脸识别...
  5. css 联系我们,CSS3 模态窗口联系我们表单模板
  6. java反序列化weblogic_[Todo]Java反序列化-weblogic
  7. mysql group by 天_MySQL group by语句如何优化
  8. html前台截取/以后的字段,截取html字符串之后补全标签 (closetag) 的新方法
  9. 西南民族大学计算机基础技能应用培训基地,计科学院第九期Office应用培训开班典礼顺利举办...
  10. 【c语言】蓝桥杯算法提高 P0401