winform利用CefSharp呼叫google瀏覽器核心ChromiumWebBrowser,與JS互動
阿新 • • 發佈:2018-12-24
一開始用了自帶的webbrowser,不支援H5,指令碼會有問題,後來又用了webkitBrowser,發現有些js效果還是顯示不出來,和webbrowser稍微好一點,但是還是不行,然後決定用CefSharp,用了之後效果完美。
原始碼地址:https://download.csdn.net/download/horseroll/10801280
方法一:通過Nuget程式包引入CefSharp.Winforms(行不通)
我引入了CefSharp.Winforms後,系統只引用了Microsoft.Sharp這個dll,沒有引用其他的dll,後面程式碼編寫引用會出錯,所以不推薦此方法
方法二:直接引入(親測可用)
1.建立winform程式,需要注意的是需要使用.NetFrameWork4.5.2以上
2.在解決方案上右鍵->"屬性"->"生成"->"目標平臺",選擇x86或x64,Cef暫不支援"Any CPU"。如果平臺裡沒有x86,在生成-配置管理器中的平臺進行新建平臺,
需要注意的是如果新建平臺,debug目錄會生成新建平臺的資料夾,注意到時候檔案的存放位置
3.下載並解壓CefSharp編譯好的檔案,注意是32位還是64位。
- CefSharp v51 x86 (for 32-bit apps)
- CefSharp v51 x64 (for 64-bit apps) 點選下載64位
4.將下載下來的檔案解壓,然後全部複製到程式bin\Debug目錄。注意檔案的存放位置
5.專案右鍵"新增引用",新增以下dll:
CefSharp.dll
CefSharp.Core.dll
CefSharp.WinForms.dll
6.編寫測試程式碼:
using CefSharp; using CefSharp.WinForms; 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()。
7.F5除錯執行即可。
8.與js互動
_browser.GetBrowser().MainFrame.EvaluateScriptAsync("test_val=" + new Random().Next().ToString("F")); //設定頁面上js的test_val變數為隨機數
_browser.GetBrowser().MainFrame.EvaluateScriptAsync("testArg('123','我是NET' )");//執行頁面上js的testArg帶引數的方法
_browser.GetBrowser().MainFrame.EvaluateScriptAsync("test()");//執行頁面上js的test方法