使用谷歌浏览器内核控件DCEF3拦截弹出的新页面到新标签页
DCEF3控件TChromium有个事件OnBeforePopup,我们可以在这个事件函数里加上自己的逻辑,最后一个参数是返回参数bool &Result,置为true表示自己来处理,置为false表示使用默认行为,即弹出一个新的窗口。
对于构造多标签页浏览器,我们的应用逻辑是在事件处理函数中取得url参数,重新new一个TChromium放置在新标签页,但这样做有问题,总是卡住然后崩溃,网上能够搜到的信息不多,唯一有用的是这篇文章:http://www.cnblogs.com/newrainsoftware/p/5535222.html
文章就是一些代码,按这个做还是会卡住崩溃。从代码中可以知道解决问题的思路,即不能在事件函数中立即new一个新的TChromium,那篇文章的解决办法是在事件处理函数中发个消息给主窗口,在主窗口中再来new TChromium。仔细看他使用的是win32函数SendMessage(),这个函数需要等目标窗口接收并处理了这个消息才会返回,和在事件处理函数中立即处理并没有区别。因此,需要将这个函数改为PostMessage(),消息发出后立即返回,并不堵塞。
经过如此改造后大功告成。
使用谷歌浏览器内核控件DCEF3拦截弹出的新页面到新标签页相关推荐
- ASP.NET Menu控件子菜单弹出导致页面出现滚动条问题
ASP.NET Menu控件子菜单弹出的时候导致页面CSS属性的Min-Height产生变化,结果是原来全屏的画面,多出了纵滚动条.可以通过如下方法解决: 将ASP.NET控件放置到Table的单元格 ...
- 怎样在Delphi中屏蔽Flash控件的右键弹出菜单
关于如何屏蔽Flash控件的右键菜单的问题有很多人问过,也有很多人回答,基本上都是说拦截 Application消息,或者继承一个新的控件,重载MouseDown消息,第一种解决办法,好象是简单 些, ...
- python 选择文件对话框插件_[ PyQt入门教程 ] PyQt5基本控件使用:消息弹出、用户输入、文件/目录选择对话框...
本文主要介绍PyQt界面实现中常用的消息弹出对话框.提供用户输入的输入框.打开文件获取文件/目录路径的文件对话框.学习这三种控件前,先想一下它们使用的主要场景: 1.消息弹出对话框.程序遇到问题需要退 ...
- 如何去除My97 DatePicker控件上右键弹出官网的链接 - 如何debug混淆过的代码
概述 http://my97.net/是一个web浏览器的日期选择控件,非常好用,做得非常棒,各种API等事件等都很方便,但是使用了4.8beta3之后,在控件上面右击会出现官网链接 ,这个是PM以及 ...
- bootstrop 日期控件 datepicker被弹出框dialog覆盖的解决办法
筒子们在使用bootstrap的日期控件(datepicker , 现在官网提供的名称叫 datetimepicker)时可能会遇到如上图的问题这是啥原因造成的呢? 答案很简单时输出的优先级造成的(z ...
- jatoolsprinter web打印控件直接打印不弹出
1.功能 主要是实现页面点击按钮,不弹窗,直接打印. 可以指定某个打印机打印 可以使用默认打印机打印 2.版本 主要有:免费版跟付费版 免费版官网:http://printfree.jatools.c ...
- ocx控件 postmessage消息会消失_APP控件之二——弹框
弹框分为两种:模态弹框和非模态弹框 一.模态弹框 模态弹框和非模态弹框最大的区别就是是否强制用户交互.模态弹框会打断用户的当前操作流程,用户不在弹框上操作的话,其余功能都使用不了. 优点是:可以很好的 ...
- VB动态添加WebBrowser控件,并拦截弹出窗口(不用引用任何组件)
WBCustomizer.dll 这个 1.注册::在开始菜单中输入RegSvr32 路径(WBCustomizer.dll文件所在的绝对路径),若果注册成功,会提示 2.引用 :在工程--&g ...
- 请求所有父控件及祖宗控件不要拦截事件
//事件分发//dispatchTouchEvent->onInterceptTouchEvent->onTouchEvent@Overridepublic boolean dispatc ...
最新文章
- Android中获取系统内存信息以及进程信息-----ActivityManager的使用(一)
- 《javascript高级程序设计》笔记:变量对象与预解析
- 如何从零开始搭建 CI/CD 流水线
- 小余学调度:学习记录(2021.10月)
- 用c++做贪吃蛇_用世界公认的变态羊毛做袜子!不用插电恒温37°C,还能抑菌99%...
- 解决npm ERR! code ENOENT
- 14 CO配置-控制-内部订单-维护定单编号范围
- Activity-数据状态的保存
- 《android开发艺术探索》读书笔记(五)--RemoteViews
- springBoot的一些注解以及静态资源的处理
- Markdown数学公式、特殊字符、上下标、积分、分式/根式 亲测有效
- SVN—如何安装SVN服务器端软件
- 算法:eight Queens 8皇后问题
- CompoundButton 选中/未选中状态的按钮
- 人人之间“不简单”,关系图谱“有一套”
- 特网云服务器 Windows自动更新相关配置
- 解决虚拟机中桥接模式下ip地址的设置
- 如何入门Python之Python基础教程详解
- win电脑主板设置的Bios密码清除方法
- 使用flink迁移数据