您的位置:首页 > 其它

使用谷歌浏览器内核控件DCEF3拦截弹出的新页面到新标签页

2017-05-20 15:03 253 查看
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 TChromium
相关文章推荐