分享: C++Builder 的 CEF4 浏览器控件来了

sczyq 2018-03-21 11:04:11
https://download.csdn.net/download/sczyq/10298006

--------------------------------------------------------------

CEF4 for Delphi & C++Builder

--------------------------------------------------------------

最新版 CEF4 下载地址:https://github.com/salvadordf/CEF4Delphi

但是只能应用到 Delphi 这个版本是 3.3325.1749.ga42963a 在 2018.03.20 下载的,请注意版本号
为了保证版本一致性,一并打包了库文件在 Library.win32 ,Win64 的库自已去下载。

--------------------------------------------------------------

库文件:

Library.win32 文件夹是CEF4用到的所有库文件,你应当复制到一个路径,路径名自定义

--------------------------------------------------------------

项目文件:

CEF4 是项目文件,适用于 RAD Studio 10.2.x 直接打开工程文件 CEF4WB.dproj 建议先编译(Debug+Release)再安装
同时 C++Builder 的 .hpp 文件在 $(BDSINCLUDE)\windows\CEF4 文件夹,应当加入到 Include 路径列表中
发布用的

--------------------------------------------------------------

文件修改说明:

1、文件名,主要是文件命名一致性

uBufferPanel.pas 改为 uCEFBufferPanel.pas
uOLEDragAndDrop.pas 改为 uCEFOLEDragAndDrop.pas
CEF4Delphi_Register.pas 改为 CEF4WB_Register.pas

同时修改了引用这些单元的相关 uses 单元

2、删除了 uFMX*.pas 是 FMX 用的,这里都是 VCL

3、修改了以下文件的 out 参数调用方式为 var ,否则 C++Builder 不能用

uCEFChromiumEvents.pas
uCEFChromiumWindow.pas

4、修改了 uCEFApplication.pas 的 TCefApplication.Create 函数加上CEF库路径参数(Library.win32 文件夹完整路径)

5、uCEFRenderProcessHandler.pas

增加了 RenderProcessHandler_OnWebKitInitialized 函数与 TCefJavaScriptExtension 类

同时 uCEFApplication.pas 中 TCefApplication.OnWebKitInitialized 已经 OK 了

你可以通过 JavaScript 取得返回值。非常有用的功能,强烈推荐。

----- 执行 JavaScript 得到返回值 ---------------------------------------------
DELPHI: Chromium1.ExecuteJavaScript('var JSResult="123456"; JSExt.Notify("myresult", JSResult);', '', 0);
BCB: Chromium1->ExecuteJavaScript("var JSResult='123456'; JSExt.Notify('myresult', JSResult);", "", 0);
--------------------------------------------------------------------------------
你就可以在 TChromium.OnProcessMessageReceived 的事件中得到 Name = 'myresult' 的 '123456' 值。
...全文
1932 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
青蛙工作室 2019-11-27
  • 打赏
  • 举报
回复
楼主为什么不做一个现成的产品供下载呢?这么弄多麻烦
单恋脚踏车 2019-11-02
  • 打赏
  • 举报
回复
从官网下载下来也成功安装,在使用c++builder 使用时一开始就遇到很多困难,不过现在能跑出个Demo了,现在在使用js互调时遇到瓶颈了. 使用自带Demo,JSWindowBindingWithFunction,转成c++builder时,遇到如下问题:
GlobalCEFApp = new TCefApplication();
GlobalCEFApp->OnContextCreated = GlobalCEFApp_OnContextCreated;
GlobalCEFApp_OnContextCreated这个如何定义,哪个朋友给看看呢?
www_xxoopapa_net 2018-04-02
  • 打赏
  • 举报
回复
哦。原来end是那个bug。。。受教了,感谢楼主。好人!
sczyq 2018-03-30
  • 打赏
  • 举报
回复
www_xxoopapa_net 2018-03-30
  • 打赏
  • 举报
回复
楼主你这个不科学我去写个最新的,按官网的几分钟就搞好了。。。
sczyq 2018-03-30
  • 打赏
  • 举报
回复
QQ: 79896009 E2029 'END' expected but identifier 'rrequires' found 就是 RX10.2 的BUG啊, Delphi 项目文件保存就是有这种情况, 主要是 PAS 中有非法字符,都是在注释里的, 保存项目文件时, .dpk 里的节: requires 变成 rrequires 多了个 r contains 变成 ccontains 多了个 c end. 变成 d. 少了 手工将 .dpk 改好了就可以保存编译安装了
www_xxoopapa_net 2018-03-30
  • 打赏
  • 举报
回复
[dcc32 Fatal Error] uCEFTypes.pas(2566): F2039 Could not create output file 'c:\program files (x86)\embarcadero\studio\19.0\lib\Win32\Debug\uCEFTypes.dcu'
www_xxoopapa_net 2018-03-30
  • 打赏
  • 举报
回复
[dcc32 Error] CEF4WB.dpk(32): E2029 'END' expected but identifier 'rrequires' found [dcc32 Error] CEF4WB.dpk(170): E2029 '.' expected but end of file found 这个什么情况啊。大哥可以加你个qq或微信不。实在按不上啊
ooolinux 2018-03-30
  • 打赏
  • 举报
回复
帮顶。。。。
  • 打赏
  • 举报
回复
ccrun.com 2018-03-21
  • 打赏
  • 举报
回复
sczyq 2018-03-21
  • 打赏
  • 举报
回复
需要修改项目文件同名的 .cpp ,你只需要这样做。

int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
//     这个参数路径是是 CEF4 库文件( Library.Win32 )路径, 我是将CEF4库文件复制到当前路径,同时因为 DEBUG 时路径内会有  \.\ 所以要处理一下
	GlobalCEFApp = new TCefApplication(StringReplace(ExtractFilePath(Application->ExeName),
					"\\.\\", "\\", TReplaceFlags() << rfReplaceAll));

	if (GlobalCEFApp->StartMainProcess())
	try
	{
		Application->Initialize();
		Application->MainFormOnTaskBar = true;
		Application->Title = "软件标题";
		Application->CreateForm(__classid(TMainForm), &MainForm);
		Application->Run();
	}
	catch (Exception &exception)
	{
		Application->ShowException(&exception);
	}
	catch (...)
	{
		try
		{
			throw Exception("");
		}
		catch (Exception &exception)
		{
			Application->ShowException(&exception);
		}
	}

	delete GlobalCEFApp;

	return 0;
}
hongss 2018-03-21
  • 打赏
  • 举报
回复
sczyq 2018-03-21
  • 打赏
  • 举报
回复
发布用的 BPL 在 bin\Release 目录

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧