1. 程式人生 > >基於CEF的NanUI框架使用開發集錦

基於CEF的NanUI框架使用開發集錦


CEF 框架使用集錦:

參考:
〓https://github.com/NetDimension/NanUI/wiki/%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8NanUI    
〓https://github.com/NetDimension/NanUI/wiki/%E6%89%93%E5%8C%85%E5%B9%B6%E4%BD%BF%E7%94%A8%E5%86%85%E5%B5%8C%E5%BC%8F%E7%9A%84HTML-CSS-JS%E8%B5%84%E6%BA%90    
〓https://github.com/NetDimension/NanUI/wiki/%E4%BD%BF%E7%94%A8%E7%BD%91%E9%A1%B5%E6%9D%A5%E8%AE%BE%E8%AE%A1%E6%95%B4%E4%B8%AA%E7%AA%97%E5%8F%A3    
〓https://github.com/NetDimension/NanUI/wiki/%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0C%23%E4%B8%8EJavascript%E7%9A%84%E7%9B%B8%E4%BA%92%E9%80%9A%E4%BF%A1

    
前言:NetDimension.NanUI 整合的 CEF 框架開發工作,僅限於VS2017下進行開發


------------------------------------------------------------
001、引用 NetDimension.NanUI.dll
------------------------------------------------------------
002、通過 NuGet 包管理器新增則會自動載入相應的CEF框架,不然則需要自行下載CEF框架
------------------------------------------------------------
003、需要將 CEF 框架的資源放置於應用程式根目錄當中:
   (1) 自適應 x86[32位] 或 x64[64位] 執行環境,將“fx”目錄放置於程式根目錄
   (2) 如果是特定的執行環境,則需要將“fx”目錄下,
       除“x64”和“x86”外的所有目錄全部放置於程式根目錄,
       然後再將相應的執行環境目錄,同樣放置於程式根目錄
------------------------------------------------------------
004、使用 Bootstrap.Load 對CEF框架進行初始化操作
   如:禁用日誌、預設語言、禁用跨域安全檢測等
   示例程式碼:
        //指定CEF架構和檔案目錄結構,並初始化CEF
        var loadFlag = Bootstrap.Load(settings => {
            //禁用日誌
            settings.LogSeverity = Chromium.CfxLogSeverity.Disable;

            //指定中文為當前CEF環境的預設語言
            settings.AcceptLanguageList = "zh-CN";
            settings.Locale = "zh-CN";
        }, commandLine => {
            //在啟動引數中新增disable-web-security開關,禁用跨域安全檢測
            commandLine.AppendSwitch("disable-web-security");
        });
        if (loadFlag) {
            Application.Run(new MainForm());
        }
        else {
            MessageBox.Show("對不起!CEF框架未能正常載入,請檢查配置環境,確認無誤後再重試。", "系統提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }
------------------------------------------------------------
005、如果是特定的執行環境使用,則需要使用如下的初始化方式,同時,
   在VS的配置管理器中新增平臺設定,將專案的目標平臺指定為所需要的平臺。
   示例程式碼:
        //指定對應系統架構,如果省略指定CEF目錄結構的引數,那麼需要手動調整CEF目錄結構。
        var loadFlag = Bootstrap.Load(PlatformArch.x86);
        if(loadFlag)
        {
            Application.Run(new MainForm());
        }
------------------------------------------------------------
006、將 WinForm 的窗體繼承變更為 NanUI 的窗體型別
   (1) Formium      NanUI使用無邊框窗體引擎
   (2) WinFormium   NanUI使用原生的窗體樣式
   (3) 繼承的窗體建構函式中,傳入需要顯示的網頁地址,即可開啟 NanUI 的 CEF 框架之旅
   示例程式碼:
        //原生的窗體樣式
        public partial class MainForm : WinFormium {
            public MainForm() 
                : base("http://cn.bing.com") {
                InitializeComponent();
            }
        }
        //無邊框窗體引擎
        public partial class MainForm : Formium {
            public MainForm() 
                : base("http://cn.bing.com") {
                InitializeComponent();
            }
        }
------------------------------------------------------------
007、在專案中新增一個應用程式清單檔案: app.manifest,
   並且取消**啟用 Windows 公共控制元件和對話方塊的主題(Windows XP 和更高版本) **段中的註釋:
   
    <!-- 啟用 Windows 公共控制元件和對話方塊的主題(Windows XP 和更高版本) -->
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0"
                processorArchitecture="*"
                publicKeyToken="6595b64144ccf1df"
                language="*"
            />
        </dependentAssembly>
    </dependency>
    
    然後在專案屬性的應用程式選項卡中找到清單專案,並指定其中內容為剛才的app.manifest,
    重新執行專案,這時網頁中的所有帶title屬性的標籤就能正常顯示工具提示了
------------------------------------------------------------
008、將WEB前端的HTML/CSS/JS等檔案作為嵌入資源編譯到專案中,既可提高載入速度,同時能避免惡意修改
------------------------------------------------------------
009、在使用 Bootstrap.Load 對CEF框架進行初始化操作時,需要同時註冊好專案所使用的內嵌資源資訊
   示例程式碼:
   
   if (loadFlag) {
        //註冊嵌入資源,併為指定資源指定一個假的域名 my.resource.local
        Bootstrap.RegisterAssemblyResources(System.Reflection.Assembly.GetExecutingAssembly(), domainName: "my.resource.local");

        //載入分離式的資源
        var separateAssembly = System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(Application.StartupPath, "EmbeddedResourcesInSplitAssembly.dll"));
        //註冊外部的嵌入資源,併為指定資源指定一個假的域名 separate.resource.local
        Bootstrap.RegisterAssemblyResources(separateAssembly , domainName: "separate.resource.local");
        
        Application.Run(new MainForm());
    }
    
    可以在專案中註冊多個程式中的嵌入式資源,但必需指定不同的域名(domainName引數),在使用時通過域名指向方式。
------------------------------------------------------------
010、完成資原始檔的嵌入後,我們就可以跟平常瀏覽網頁一樣,
   按照指定的虛假域名加上資源嵌入的目錄層級路徑,就可以在 NanUI 中順利使用我們的嵌入資源
   (1) 通過 http://my.resource.local/index.html 訪問主專案中的 index.html 檔案
   (2) 通過 http://separate.resource.local/index.html 訪問外部程式集 EmbeddedResourcesInSplitAssembly.dll 中的 index.html 檔案
   
   專案中使用示例程式碼:
   
   public partial class MainForm : Formium
    {
        public MainForm() 
            : base("http://my.resource.local/index.html")
        {
            InitializeComponent();
        }
    }
------------------------------------------------------------