如何在Delphi应用程序中嵌入除IE之外的浏览器对象
使用默认的TWebBrowser使嵌入Web浏览器变得容易。不幸的是,默认情况下出现的是IE <n>。
我想知道如何集成一个Gecko或者WebKit。
- 哪里有VCL示例?
- 如果没有,那该怎么办呢?
- 在哪里可以找到可嵌入格式的Gecko和/或者WebKit核心的最佳位置?
解决方案
TWebBrowser是IE。它不是浏览器的可插入结构。我们可以将其他浏览器集成到应用程序中。看
- http://www.adamlock.com/mozilla/
- http://delphi.mozdev.org/articles/taming_the_lizard_with_delphi.html
- http://ftp.newbielabs.com/Delphi%20Gecko%20SDK/
编辑:不幸的是,拉斯击败了我
好吧,有一个基于Gecko引擎的ActiveX控件,它试图呈现IWebBrowser API(TWebBrowser使用的确切副本)。
我们可以在这里找到它:http://www.iol.ie/~locka/mozilla/control.htm
不幸的是,它似乎已经有一段时间没有更新了。最新版本基于Gecko 1.7.12,我认为Gecko当前为1.9.x(在Firefox 3中使用)
一个替代方法是THTMLViewer组件。我已经使用了几年了。
现在可以免费使用。该网站位于http://pbear.com/htmlviewers.html。根据songbeamer网站(http://www.songbeamer.com/delphi/),提供了Delphi 2009版本。
在过去的三年中,我几乎没有将Gecko嵌入Delphi的方式。在我看来,在游戏中出现得比较晚的一个库是SourceForge上的GeckoSDK项目。在尝试使嵌入式Gecko在Delphi中正常工作时,我做了很多工作。我们首次尝试使用Delphi和Gecko 1.8构建基于Gecko渲染引擎的内部"浏览器"。从那以后,我们继续前进,我们的浏览器现在是XULRunner应用程序。从我尚未删除的早期尝试开始,我的硬盘上已有一些代码。
当Mozilla发行Gecko 2.0时,我认为将其嵌入Delphi会变得容易得多。 Gecko中的XPCOM对象系统很难嵌入,因为大多数东西都返回NS_RESULT。弦特别难。
编辑:我只是浏览了我的旧书签(几乎所有书签都死了),并在基于壁虎的日语"百吉饼"浏览器中搜索了新网址,并在这里找到了它,
http://github.com/plus7/bagel/tree/master/Legacy。
对于一些优秀的代码,这可能是最好的选择。不幸的是,代码中的注释是日语,并且作者从未回答任何问题。
一个可行的替代方法是CEF Chromium嵌入式框架,该框架封装了Chromium浏览器,后者本身封装了WebKit。该库以纯DLL形式提供,并带有导出的C API。
在code.google.com/p/delphichromiumembedded中有一个delphi界面。
我一直在使用自己的接口实现来使用它,并且效果很好,尽管不像THTML或者IE那样容易使用,但是对于需要功能强大且可嵌入的浏览器的人来说,效果很好。