转载:https://blog.csdn.net/liuyan20092009/article/details/53819473?locationNum=6&fps=1
转载:https://blog.csdn.net/guniwi/article/details/83013415
转载:https://magpcss.org/ceforum/apidocs3/(CEF3较为权威的中文文档)
转载:https://blog.csdn.net/yingwang9/article/details/82187544(cef 本地web资源 打包 加密)
CefClient提供访问Browser实例的回调接口。一个CefClient实现可以在任意数量的Browser进程中共享。以下为几个重要的回调:
1.实现CEF在html里面下载文件,首先要让我们自己的CefClient这个类公有继承CefDownloadHandler
2.添加下载事件构造函数
virtual CefRefPtr<CefDownloadHandler> GetDownloadHandler() override; // 声明
CefRefPtr<CefDownloadHandler> CCefClientHandler::GetDownloadHandler() //实现 { return this; }
3.然后重写父类的OnBeforeDownload和OnDownloadUpdated两个方法
在.h文件中添加函数声名
virtual void OnBeforeDownload( CefRefPtr<CefBrowser> browser, CefRefPtr<CefDownloadItem> download_item, const CefString& suggested_name, CefRefPtr<CefBeforeDownloadCallback> callback) OVERRIDE; virtual void OnDownloadUpdated( CefRefPtr<CefBrowser> browser, CefRefPtr<CefDownloadItem> download_item, CefRefPtr<CefDownloadItemCallback> callback);
在.cpp中重写函数
void CCefBrowserEventHandler::OnBeforeDownload( CefRefPtr<CefBrowser> browser, CefRefPtr<CefDownloadItem> download_item, const CefString& suggested_name, CefRefPtr<CefBeforeDownloadCallback> callback) { WCHAR sMyDocuPath[800] = { 0 }; ::SHGetSpecialFolderPathW(0, sMyDocuPath, CSIDL_PERSONAL, 0); wstring sDownloadPath = sMyDocuPath; sDownloadPath += L"\\"; sDownloadPath += suggested_name.ToWString(); wstring wstrExt = suggested_name.ToWString(); string::size_type position = wstrExt.find(L"."); if (position == -1)//没找到,说明文件没有扩展名,我们补上默认文件扩展名,不然下载好的文件无法查看 { sDownloadPath += L".jpg"; } CefString sPath; sPath.FromWString(sDownloadPath); //Param [download_path] Set |download_path| to the full file path for the download including the file name //Param [show_dialog] Set | show_dialog | to true if you do wish to show the default "Save As" dialog. callback->Continue(sDownloadPath, true);//第一个参数是设置文件保存全路径包含文件名 } void CCefBrowserEventHandler::OnDownloadUpdated( CefRefPtr<CefBrowser> browser, CefRefPtr<CefDownloadItem> download_item, CefRefPtr<CefDownloadItemCallback> callback) { if (download_item->IsComplete())//下载完成 { wstring sFilePath = download_item->GetFullPath().ToWString();//拿到下载完成文件全路径 } }
原文:https://www.cnblogs.com/chechen/p/10088006.html