如何使CEF支持Flash

来源:https://www.cnblogs.com/88223100/archive/2020/03/22/how_to_add_flash_support_in_cef.html
-Advertisement-
Play Games

Chromium has removed support for NPAPI and consequently CEF no longer supports loading of the NPAPI Flash plugin. To support loading of the Pepper (PP... ...


方法一:複製Chrome瀏覽器下的pepperFlash,通過cef命令行參數設置路徑。

public Form1()
{
    InitializeComponent();
    InitializeChromium();
}
 
private void InitializeChromium()
{
    ChromiumWebBrowser.OnBeforeCfxInitialize += ChromiumWebBrowser_OnBeforeCfxInitialize;
    ChromiumWebBrowser.OnBeforeCommandLineProcessing += ChromiumWebBrowser_OnBeforeCommandLineProcessing;
    ChromiumWebBrowser.Initialize();
 
    ChromiumWebBrowser wb = new ChromiumWebBrowser();
    wb.Dock = DockStyle.Fill;
    wb.Parent = this;
    wb.LoadUrl("chrome://version");
}
 
void ChromiumWebBrowser_OnBeforeCommandLineProcessing(Chromium.Event.CfxOnBeforeCommandLineProcessingEventArgs e)
{
    e.CommandLine.AppendSwitch("--disable-web-security");//關閉同源策略
    e.CommandLine.AppendSwitchWithValue("ppapi-flash-version", "18.0.0.209");//PepperFlash\manifest.json中的version
    e.CommandLine.AppendSwitchWithValue("ppapi-flash-path", "PepperFlash\\pepflashplayer.dll");
}
 
void ChromiumWebBrowser_OnBeforeCfxInitialize(Chromium.WebBrowser.Event.OnBeforeCfxInitializeEventArgs e)
{
    e.Settings.CachePath = "Session";
    e.Settings.Locale = "zh-CN";
}

方法二:通過命令行參數設置cef使用系統安裝的flash

void ChromiumWebBrowser_OnBeforeCommandLineProcessing(Chromium.Event.CfxOnBeforeCommandLineProcessingEventArgs e)
{
    e.CommandLine.AppendSwitch("--disable-web-security");//關閉同源策略
    e.CommandLine.AppendSwitch("--enable-system-flash");//使用系統flash
}

 

Chromium has removed support for NPAPI and consequently CEF no longer supports loading of the NPAPI Flash plugin. To support loading of the Pepper (PPAPI) Flash plugin the following implementation must be brought over from Chrome:

In the browser process:

  1. ChromeContentClient::AddPepperPlugins -- Locates the Flash plugin library. In CEF this will be implemented via CefContentClient::AddPepperPlugins.
  2. ChromeContentBrowserClientPluginsPart::DidCreatePpapiPlugin -- Creates the ChromeBrowserPepperHostFactory that is responsible for the browser side of PPAPI message routing. In CEF this will be implemented via CefContentBrowserClient::DidCreatePpapiPlugin.
  3. ChromeBrowserPepperHostFactory::CreateResourceHost -- Creates the hosts for individual pieces of Flash-related functionality (e.g. PepperFlashBrowserHost, PepperFlashClipboardMessageFilter, PepperFlashDRMHost).

In the renderer process:

  1. ChromeContentRendererClient::RenderFrameCreated -- Creates the ChromeRendererPepperHostFactory (via the per-RenderFrame PepperHelper) that is responsible for the renderer side of PPAPI message routing. In CEF this will be implemented via CefContentRendererClient::RenderFrameCreated.
  2. ChromeRendererPepperHostFactory::CreateResourceHost -- Creates the hosts for individual pieces of Flash-related functionality (e.g. PepperFlashRendererHost, PepperFlashFullscreenHost, PepperFlashMenuHost, PepperFlashFontFileHost, PepperFlashDRMRendererHost).

參考:https://bitbucket.org/chromiumembedded/cef/issues/1586/add-pepper-flash-plugin-support


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. Mapper映射代理介面 MyBatis基於代理機制,可以讓我們無需在編寫Dao層的介面,我們可以把以前的Dao層的IXxxDao介面直接定義成符合規則的Mapper介面。 具體實現步驟如下: ① 在項目mapper文件目錄下創建對應的Mapper介面,介面命令必須是以Mapper結尾,名字是 ...
  • 我的LeetCode刷題源碼[GitHub]:https://github.com/izhoujie/Algorithmcii LeetCode 945. 使數組唯一的最小增量 題目 給定整數數組 A,每次 move 操作將會選擇任意 A[i],並將其遞增 1。 返回使 A 中的每個值都是唯一的最少 ...
  • SpringBoot 全局異常處理 "趙小胖個人博客" ...
  • JAVA 轉換 樹結構數據 第一步:引入fastjson 第二步:用到了工具內的JSONPath "JSONPath使用教程" "趙小胖個人博客" ...
  • Laravel、Lumen列印sql每次都要在手動加調試代碼挺麻煩的。本文主要介紹另一個調試神器 barryvdh/laravel-debugbar 先講一下效果。可以調試帶頁面的介面,也可以調試單純的json api介面。 圖一:請求的介面列表,可以根據一些條件進行過濾。紅色劃線的部分是我自己修改 ...
  • 一、隊列(Queue) 1.1、概念 隊列(Queue)代表了一個先進先出的對象集合。當您需要對各項進行先進先出的訪問時,則使用隊列。當您在列表中添加一項,稱為入隊,當您從列表中移除一項時,稱為出隊。 1.2、Queue類的屬性 下表列出了Queue類的一些常用的屬性: 屬性描述 Count 獲取 ...
  • 動手造輪子:給微軟的日誌框架寫一個基於委托的日誌提供者 Intro 微軟的日誌框架現在已經比較通用,有時候我們不想使用外部的日誌提供者,但又希望提供一個比較簡單的委托就可以實現日誌記錄,於是就有了後面的探索和實現。 Solution 基於委托的 實現代碼: 自定義 Logger 微軟的日誌框架中記錄 ...
  • 服務的生命周期 鏈式註入時,生存期的選擇 TryAdd與泛型註入 替換內置服務容器 ASP.NET Core提供了預設的依賴註入容器,可以在Startup.ConfigureServices方法中進行服務註入的配置。 服務的生命周期 預設的依賴註入容器提供了三種生命周期: 暫時(AddTransie ...
一周排行
    -Advertisement-
    Play Games
  • 基於.NET Framework 4.8 開發的深度學習模型部署測試平臺,提供了YOLO框架的主流系列模型,包括YOLOv8~v9,以及其系列下的Det、Seg、Pose、Obb、Cls等應用場景,同時支持圖像與視頻檢測。模型部署引擎使用的是OpenVINO™、TensorRT、ONNX runti... ...
  • 十年沉澱,重啟開發之路 十年前,我沉浸在開發的海洋中,每日與代碼為伍,與演算法共舞。那時的我,滿懷激情,對技術的追求近乎狂熱。然而,隨著歲月的流逝,生活的忙碌逐漸占據了我的大部分時間,讓我無暇顧及技術的沉澱與積累。 十年間,我經歷了職業生涯的起伏和變遷。從初出茅廬的菜鳥到逐漸嶄露頭角的開發者,我見證了 ...
  • C# 是一種簡單、現代、面向對象和類型安全的編程語言。.NET 是由 Microsoft 創建的開發平臺,平臺包含了語言規範、工具、運行,支持開發各種應用,如Web、移動、桌面等。.NET框架有多個實現,如.NET Framework、.NET Core(及後續的.NET 5+版本),以及社區版本M... ...
  • 前言 本文介紹瞭如何使用三菱提供的MX Component插件實現對三菱PLC軟元件數據的讀寫,記錄了使用電腦模擬,模擬PLC,直至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1. PLC開發編程環境GX Works2,GX Works2下載鏈接 https:// ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • 1、jQuery介紹 jQuery是什麼 jQuery是一個快速、簡潔的JavaScript框架,是繼Prototype之後又一個優秀的JavaScript代碼庫(或JavaScript框架)。jQuery設計的宗旨是“write Less,Do More”,即倡導寫更少的代碼,做更多的事情。它封裝 ...
  • 前言 之前的文章把js引擎(aardio封裝庫) 微軟開源的js引擎(ChakraCore))寫好了,這篇文章整點js代碼來測一下bug。測試網站:https://fanyi.youdao.com/index.html#/ 逆向思路 逆向思路可以看有道翻譯js逆向(MD5加密,AES加密)附完整源碼 ...
  • 引言 現代的操作系統(Windows,Linux,Mac OS)等都可以同時打開多個軟體(任務),這些軟體在我們的感知上是同時運行的,例如我們可以一邊瀏覽網頁,一邊聽音樂。而CPU執行代碼同一時間只能執行一條,但即使我們的電腦是單核CPU也可以同時運行多個任務,如下圖所示,這是因為我們的 CPU 的 ...
  • 掌握使用Python進行文本英文統計的基本方法,並瞭解如何進一步優化和擴展這些方法,以應對更複雜的文本分析任務。 ...
  • 背景 Redis多數據源常見的場景: 分區數據處理:當數據量增長時,單個Redis實例可能無法處理所有的數據。通過使用多個Redis數據源,可以將數據分區存儲在不同的實例中,使得數據處理更加高效。 多租戶應用程式:對於多租戶應用程式,每個租戶可以擁有自己的Redis數據源,以確保數據隔離和安全性。 ...