1. 程式人生 > >C#客戶端嵌入Chrome瀏覽器的實現

C#客戶端嵌入Chrome瀏覽器的實現

客戶端軟體,也就是傳統的Winform軟體,在很多時候是很好用的。因為在做一些列印、本地裝置操作的時候,純Web系統還是存在很多侷限性的。例如很多驅動你需要單獨寫cab包啦,互動式實現除錯很困難啦,瀏覽器適配問題啦等等。這個時候,Winform結合Web的方式,就是一種比較好的選擇。

傳統上來說,.net本身支援WebBrowser,但是WebBrowser這個東西是基於本地作業系統IE瀏覽器的,一些CSS的樣式解析啦,還有一些許可權什麼的,還是沒有辦法很好的控制。這時候我們就會想要把Chrome瀏覽器嵌入過來用了。

最早網上有Webkit的一些控制元件,但是現在已經不提供更新維護了。所以截止目前為止,CefSharp是一個比較好的解決方案。CefSharp是嵌入的Chromium瀏覽器,基本等同chrome。

筆者這裡用的是VS2017社群版,簡單寫寫操作,給大家掃盲吧。

首先是先搭建基本的開發環境。

1. 新建Winform應用程式。

2. 在解決方案管理器上,右鍵單擊引用,選擇“管理NuGet程式包”。

3. 點選瀏覽選項卡,搜尋CefSharp,在列表中選擇CefSharp.WinForms,安裝CefSharp包,會自動安裝相關引用包。

4. 開啟引用列表,看到有CefSharp,CefSharp.Core,CefSharp.Winforms這三個包就OK了。

然後說一下基本的用法。先實現把ChromeWebBrowser嵌入到窗體中去並開啟百度好了。

public ChromiumWebBrowser browser;
public void InitBrowser(){
    Cef.Initialize(new CefSettings());
    browser = new ChromiumWebBrowser ("www.baidu.com");
    this.Controls.Add(browser);
    browser.Dock = DockStyle.Fill;
}

然後再窗體建構函式中,InitializeComponent()之後呼叫InitBrowser()方法,將browser新增到窗體中去。

這裡要說一下,CefSharp這個開源專案,目前應該沒有辦法匯入VS的工具箱(至少筆者沒成功),所以只能通過程式碼方式建立物件,browser的事件,也都需要程式碼註冊,不過只要不是太新的新手,應該很快就習慣了。

這樣執行就能開啟百度的頁面了。

第一篇就這樣吧,接下來會說一下如何在browser中的html頁面裡,用js呼叫Winform中的方法。