使用CefSharp在.Net程序中嵌入Chrome瀏覽器
有的時(shí)候,我們需要在程序中嵌入Web瀏覽器,其實(shí).Net Framework中本身就提供了WebBrowser控件,本身這個(gè)是最簡(jiǎn)單易用的方案,但不知道是什么原因,這個(gè)控件在瀏覽網(wǎng)頁的時(shí)候有些莫名的卡頓,有的時(shí)候甚至能達(dá)到好幾秒,嚴(yán)重影響體驗(yàn)。
這個(gè)時(shí)候,我們可以考慮使用第三方瀏覽器來代替系統(tǒng)的WebBrowser,常見的方案是使用版本帝Chrome,Chrome本身提供了供第三方程序嵌入的方案Chromium Embedded Framework (CEF),但這個(gè)是C++的接口,在.Net程序中使用還是有一定的工作量的。不過目前已經(jīng)有一些開源的項(xiàng)目完成了這一封裝,其中的一個(gè)佼佼者就是CefSharp,WPF和WinForm的封裝都實(shí)現(xiàn)了,本文就簡(jiǎn)單的介紹一下如何在WPF程序中使用CefSharp來嵌入Chrome瀏覽器。
安裝:
安裝的過程非常簡(jiǎn)單,只要使用NuGet安裝CefSharp.Wpf即可。
PM> Install-Package CefSharp.Wpf
安裝過程本身比較常規(guī),不過值得一提的是,這個(gè)包非常大,由于集成了x86和x64的版本,整個(gè)包(加上幾個(gè)依賴的包)達(dá)到了200多mb,基于眾所周知的原因,和Nuget的訪問一直不大通暢,有時(shí)還抽風(fēng)整個(gè)過程非常漫長(zhǎng),一定要有足夠的耐心以及人品。
修改編譯選項(xiàng):
由于Chrome是原生程序,目前CefSharp還不能做到32位和64位自動(dòng)識(shí)別,不能使用默認(rèn)的AnyCPU的編譯選項(xiàng),需要修改一下配置管理器,改成x86或x64才行。
使用:
使用的過程比較簡(jiǎn)單,直接使用如下代碼即可。
private void MainWindow_Loaded(object sender, RoutedEventArgs e) { var setting = new CefSharp.CefSettings(); CefSharp.Cef.Initialize(setting, true, false); var webView = new CefSharp.Wpf.ChromiumWebBrowser(); this.Content = webView; webView.Address = "http://www.cnblogs.com/TianFang/"; }
參數(shù)設(shè)置
在實(shí)現(xiàn)了.Net程序中嵌入Chrome瀏覽器后,下一步的個(gè)性化操作就是加入一些設(shè)置了,,我們可以看到在使用Chrome控件前,有如下一個(gè)操作:
var setting = new CefSharp.CefSettings(); CefSharp.Cef.Initialize(setting, true, false);
這個(gè)setting變量就是用來存放chrome的全局設(shè)置的地方,當(dāng)需要進(jìn)行設(shè)置的時(shí)候,只需要對(duì)它進(jìn)行修改即可。例如,我們要修改緩存目錄,只需要如下設(shè)置即可:
var setting = new CefSharp.CefSettings() { CachePath = Directory.GetCurrentDirectory() + @"\Cache", };
另外,有的設(shè)置是通過啟動(dòng)參數(shù)傳入的,這些啟動(dòng)參數(shù)存放在CefCommandLineArgs成員中了,通過字符串的形式傳入。例如,我們要給Chrome程序加一個(gè)代理服務(wù)器,則可以修改如下:
setting.CefCommandLineArgs.Add("--proxy-server", "http://127.0.0.1:8877");
到此這篇關(guān)于使用CefSharp在.Net程序中嵌入Chrome瀏覽器的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Asp.net中使用PageDataSource分頁實(shí)現(xiàn)代碼
這篇文章主要介紹asp.net中使用PageDataSource分頁的方法,需要的朋友可以參考下2013-04-04asp.net fileupload控件上傳文件與多文件上傳
這篇文章主要介紹了asp.net fileupload控件上傳文件的方法,fileupload控件多文件上傳,以及fileupload上傳時(shí)實(shí)現(xiàn)文件驗(yàn)證的方法,需要的朋友可以參考下2014-11-11.net使用jwt進(jìn)行身份認(rèn)證的流程記錄
這篇文章主要給大家介紹了關(guān)于.net使用jwt進(jìn)行身份認(rèn)證的相關(guān)資料,JWT是Auth0提出的通過對(duì)JSON進(jìn)行加密簽名來實(shí)現(xiàn)授權(quán)驗(yàn)證的方案,本文通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09asp.net下實(shí)現(xiàn)輸入數(shù)字的冒泡排序
.net下實(shí)現(xiàn)輸入數(shù)字的冒泡排序2010-03-03MVC+EasyUI+三層新聞網(wǎng)站建立 主頁布局的方法(五)
這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層新聞網(wǎng)站建立的第五篇,教大家如何進(jìn)行主頁布局,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07.net 運(yùn)用二進(jìn)制位運(yùn)算進(jìn)行數(shù)據(jù)庫權(quán)限管理
.net 運(yùn)用二進(jìn)制位運(yùn)算進(jìn)行數(shù)據(jù)庫權(quán)限管理 ,需要的朋友可以參考一下2013-02-02DataGrid同時(shí)具有分頁和排序功能及注意點(diǎn)
DataGrid同時(shí)具有分頁和排序功能及注意點(diǎn)...2006-09-09