失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 使用谷歌浏览器内核控件DCEF3拦截弹出的新页面到新标签页

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

时间:2022-04-11 05:37:53

相关推荐

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

DCEF3控件TChromium有个事件OnBeforePopup,我们可以在这个事件函数里加上自己的逻辑,最后一个参数是返回参数bool &Result,置为true表示自己来处理,置为false表示使用默认行为,即弹出一个新的窗口。

对于构造多标签页浏览器,我们的应用逻辑是在事件处理函数中取得url参数,重新new一个TChromium放置在新标签页,但这样做有问题,总是卡住然后崩溃,网上能够搜到的信息不多,唯一有用的是这篇文章:/newrainsoftware/p/5535222.html

文章就是一些代码,按这个做还是会卡住崩溃。从代码中可以知道解决问题的思路,即不能在事件函数中立即new一个新的TChromium,那篇文章的解决办法是在事件处理函数中发个消息给主窗口,在主窗口中再来newTChromium。仔细看他使用的是win32函数SendMessage(),这个函数需要等目标窗口接收并处理了这个消息才会返回,和在事件处理函数中立即处理并没有区别。因此,需要将这个函数改为PostMessage(),消息发出后立即返回,并不堵塞。

经过如此改造后大功告成。

如果觉得《使用谷歌浏览器内核控件DCEF3拦截弹出的新页面到新标签页》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。