CefSharp Kullanımı ve Örnek Uygulama – 1

0
36

Merhaba bu yazımız devam niteliğinde bir yazı olacaktır. Daha önce  C# Web Browser Kullanımı yazısında browser kullanımından bahsetmiştim. Ancak bu browser yapı olarak Explorer kullandığından dolayı Javascript hatalarını almaktaydı. Bu sebeple bugün Cefsharp eklentisinin kurulumundan ve örnek uygulamadan bahsedeceğim. Bu anlatma işlemini winform üzerine bir web browser kurup onun üzerinde işlemler yaparak anlatacağım.

Cefsharp Nedir ?

Chromium altyapısını kullanan chrome web browserını kullanmamıza yarayan bir pakettir. Bu paket sayesinde chrome içerisinde kullandığımız browser özelliklerinin hepsine erişebilmekteyiz.

Cefsharp Kurulumu

Bu paketin iki türlü kurulum mevcuttur. Ya aşağıda vereceğim link üzerinden dosyaları indirip projemize eklemek. Diğer yol ise NuGet içerisinden paket olarak kurulum yapılmasıdır. Ben NuGet üzerinden indirip işlemleri yapacağım. Aşağıdaki gibi install dedikten sonra birkaç saniye içinde hızlıca kurulum da gerçekleşmiş oluyor.

cefsharp

Kurulum yaptıktan sonra debug işleminde  ” cefsharp.common contains unmanaged resources ”  hatasını alacağız. Bu hata aslında işlemci uyumundan kaynaklı olduğundan hangi işlemciyle debug etmemiz gerektiğini  ayarlamalıyız. Bunun için üstteki menüden Build>Configuration Manager yoluna gidiyoruz. Açılan ekranda platform sekmesine tıklayarak New seçeneğini seçiyoruz. Buradan x86 yani 32 bitlik işlemciyi seçip işlemi tamamlıyoruz. Bundan sonra derlemede bu hatayla karşılaşmayacaksınız.

cefsharp kurulum

Cefsharp Kullanım

Cefsharp kullanımı için bir adef winform/wpf gibi browser görüntülemek için gereken bir alan oluşturmamız yeterlidir. Bundan sonrasında using bloğuna gereken referansları ekleriz.

using System.Windows.Forms;
using CefSharp;
using CefSharp.WinForms;

Sonrasında aşağıdaki kod bloğunu Form oluşturulduktan hemen sonra ekliyoruz.

public Form1()
 {
     InitializeComponent();
     this.WindowState = FormWindowState.Maximized;
     CefSettings settings = new CefSettings();
     CefSharpSettings.LegacyJavascriptBindingEnabled = true;
     Cef.Initialize(settings);    
     chrome = new ChromiumWebBrowser("http://google.com");
     chrome.StatusMessage += Chrome_StatusMessage;
     chrome.IsBrowserInitializedChanged += Chrome_IsBrowserInitializedChanged;
     chrome.FrameLoadStart += Chrome_FrameLoadStart;
     chrome.FrameLoadEnd += Chrome_FrameLoadEnd;
     chrome.RegisterJsObject("object", new CallbackObjectForJs());
     this.panel1.Controls.Add(chrome);
     chrome.Dock = DockStyle.Fill;
 }

Bu kodda Settings ayarlarını yapıyoruz. Tıpkı webbrowser örneğimizdekine benzer şekildedir. O örnekte Navigate metodu sayfaya gitmemize yaraken burada Load metodunu kullanıyoruz. Burada bazı eventlerden de bahsetmem gerekmekte. Bu eventler sayesinde sayfanının durumunu 404 hatası alıp almadığı gibi start stop durumlarını kontrol edebilmekteyiz. Durumuyla ilgili sorgulamaları da bu eventler sayesinde ulaşabiliriz.

private void Chrome_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
      {   
          if (e.HttpStatusCode == 404 || e.HttpStatusCode == 0)
          {
              // 404 Not Found !!
          }
      }

Bu Event sayesinde sayfa yüklenmediği hata aldığı durumları kontrol etmek mümkündür. Bir diğer event ise sayfanın değil browserın yüklenip yüklenemediğini sorgulamamıza yarayan Chrome_IsBrowserInitializedChanged eventi. Bu eventi de aşağıdaki gibi kullanıyoruz. Burada da !e.IsBrowserInitialized komutunu if bloğunda kullanarak browsera ait bir problem olduğunda nasıl bir refleks göstereceğimizi belirleyebiliriz.

Kurulum dosyaları

https://github.com/cefsharp/CefSharp

CEVAP VER

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.