komponent etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
komponent etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

14.11.12

C# WebBrowser Versiyon Problemi

C# projenizde WebBrowser kullanıyorsunuz ama sayfalar düzgün görünmüyorsa WebBrowser versiyon problemi yaşıyorsunuz demektir. Bu komponent İE tabanlıdır. İE'nin son versiyonunu siz bilgisayarınızda kullansanız da aşşağıdaki anlatılan ayar yapılmadan komponent sizin kullandığınız versiyonu kullanmıyor maalesef. En azından şimdilik durum bu.

Örneğin komponentiniz HTML5 uyumlu çalışmıyorsa eski versiyonlardan biriyle çalışıyordur muhtemelen. Bu durumda yeni versiyonla çalışmasını sağlamalıyız.


http://stackoverflow.com/questions/9983237/ie9-webbrowser-control-does-not-render-animations-like-in-ie9

http://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation

Evet, bu linklerde de anlatıldığı üzere registry'de bir ayar yapmanız gerekmekte.

Start menüsüne registry yazıp hemen "Registry Editor" u açabilirsiniz. Daha sonra  sırasıyla şu klasörleri açın.


HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_BROWSER_EMULATION

Burada sağ tıklayıp yeni bir satır ekleyeceğiz.


Process isminizi (örneğin uygulama.exe, task manager'dan tam olarak bakabilirsiniz) nurda isim olarak vermelisiniz data kısmını ise "Modify" diyerek değiştirebiliyoruz. Burada İE sürümü 10 u kullanma istiyorsanız decimal olarak değeri 10000 ayarlamanız, 9'u kullanmak istiyorsanız decimal olarak 9000 ayarlamanız, gerekiyor. Versiyonuna göre kullanabileceğiniz değğerler aşağıda.

ValueDescription
10001 (0x2711)Internet Explorer 10. Webpages are displayed in IE10 Standards mode, regardless of the !DOCTYPE directive.
10000 (0x02710)Internet Explorer 10. Webpages containing standards-based !DOCTYPE directives are displayed in IE10 Standards mode. Default value for Internet Explorer 10.
9999 (0x270F)Windows Internet Explorer 9. Webpages are displayed in IE9 Standards mode, regardless of the !DOCTYPE directive.
9000 (0x2328)Internet Explorer 9. Webpages containing standards-based !DOCTYPE directives are displayed in IE9 mode. Default value for Internet Explorer 9.
8888 (0x22B8)Webpages are displayed in IE8 Standards mode, regardless of the !DOCTYPE directive.
8000 (0x1F40)Webpages containing standards-based !DOCTYPE directives are displayed in IE8 mode. Default value for Internet Explorer 8
7000 (0x1B58)Webpages containing standards-based !DOCTYPE directives are displayed in IE7 Standards mode. Default value for applications hosting theWebBrowser Control.


Ayrıca kodla da Registry işlemleri yapılabilmekte. 

Ancak kodla LocalMachine'i değiştirebilmek için program administrator modda açılmalı. Sağ tık ile "run as admininistrator" diyebileceğiniz gibi Visual C# - Kodla Yönetici Olarak Çalıştırmak yazımızda anlattığımız gibi de yapabilirsiniz. Aksi takdirde Registry kodlarım neden çalışmıyor diye kendinizi üzebilirsiniz.  CurrentUser klasörleri üzerinde çalışırken yönetici modda olsanız da olmasanız da farketmez, çalışır.




RegistryKey regkey = (RegistryKey)Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", true);
               regkey.SetValue(System.Diagnostics.Process.GetCurrentProcess().ProcessName.ToString()+".exe", 9000, RegistryValueKind.DWord);




Yukarıdaki path 32 bit sistemler içindir. 64 bit sistemler için kullanmanız gereken path şudur:

@"\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"



Şimdi aklımıza tabii hemen ne geldi? C#'da sistemin kodla 32 bit mi - 64 bit mi olduğunu nasıl bulacağımız? Onun da cevabı bir sonraki yazımızda : C# İle Sistemin 32 Bit Mi 64 Bit Mi Olduğunu Bulma



Faydalı olması dileğiyle.

C# ile GeckoFx Kullanımı - Projeye Ekleme

Uzun zaman sonra teknik bir yazı yazacağız. C# programlama dili ile ilgili.

Visual Studio'da biliyorsunuz webBrowser component'i var. Bu component ile kolayca browser ekleyebiliyoruz projemize.

VS'da default bulunan bu component İE'nin engine'ini kullanıyor. (O'nu da doğru düzgün kullanamıyor ya, o da bir sonraki yazının konusu. Son versiyonunu kullandırtmak için registry'de bir ayar yapmak gerekiyor, ona başka bir yazıda değineceğiz nasip olursa)

Evet, İnternet Explorer'ı beğenmeyenler, ya da uygulaması icabı başka bir browser altyapısı kullanmak isteyenler olabilir. Mesela Chrome altyapısı, Firefox altyapısı.

Evet., şimdi kısaca bunu nasıl yapacağınızı anlatacağız. (VS 2008'de, .NET Framework 3.5)

Bu iş için üretilmiş çeşitli opensource componentler var, biz GeckoFx'i anlatacağız. Bunun haricinde Webkit, CefSharp gibi alternatifler de var.


1. Projemize Referanslar bölümünden, internetten indirdiğimiz Skybound.GeckoFX.src.v1.9.1.0 dosyası içerisindeki bin klasöründe bulunan Skybound.Gecko.dll'i ekliyoruz.

2. Aynı dosyayı toolbox'a sürükle bırak yapıyoruz.(VS 2008'de Debug modda olmamaya dikkat edin ve Form'unuzun Design kısmındayken bu işlemi yapın.)(Not: VS 2010'da bu sürükle bırak işlemi yemiyor, orada sağ tıklayıp "Choose Item" diyorsun, sonra da çıkan pencerede "Browse" butonuna basıp yukarıda yolunu tarif ettiğim dll'i ekliyorsun)

3. İnternetten indirdiğimiz Skybound.GeckoFX.src.v1.9.1.0 dosyasındaki bi klasörünün içindekileri kopyalayıp projemizdeki Debug klasörü altına yapıştırıyoruz.

4. Evet, geldik önemli adıma. Şimdi internetten xulrunner-3.6.26.en-US.win32 dosyasını indiriyoruz, bu dosyanın yine bin klasörünün içini kopyalayıp(yaklaşık 25 MB) C dizini altında oluşturacağımız yeni bir klasöre kopyalıyoruz.

5. Oluşturduğumuz ve içini doldurduğumuz bu yeni klasörün path'ini, formumuzun constructer kısmında


  public Form1()
        {
            InitializeComponent();
          Skybound.Gecko.Xpcom.Initialize(@"C:\XulRunner\");
        }

şeklinde belirtiyoruz.

6. Sürükle bırak yöntemiyle Toolbox'daki Genco komponentimizi formumuza ekliyoruz.

7. Aşağıdaki kod ile url'yi verip uygulamamızı kullanabiliyoruz.

 geckoWebBrowser1.Navigate("http://kuran.diyanet.gov.tr/Kuran.aspx");


Hepsi bu kadar. Aslında basit. Sadece işlemler biraz uzun. Diğer fonksiyonları (refresh, go, stop, back, forward vb. rahatça bulabilirsiniz.)

Burada indirdiğiniz dosyaların versiyonları, birbirleriyle uyumu önemli. Buna dikkat ederek indirmeniz lazım. Benim yukarıda verdiklerim HTML5 uyumlu versiyon, eski versiyonlar da internette mevut, yanılıp da eski versiyonları indirirseniz birtakım uyum problemleri yaşayabilirsiniz.

Merak edenler için hemen söyleyelim, Gecko motorlu browserlardan bazıları : Firefox, Camino, Flock, Thunderbird, Seamonkey, Epiphany, NVU, Netscape, K-Meleon

Ayrıca şu adrese de bir göz atabilirsiniz:

http://smush143.wordpress.com/2010/12/28/embedding-webkit-and-gecko-in-vb-net-application/

Ancak dikkat edin verdiği sürüm sanırım eski.

Bu arada xulrunner kısmını atlarsanız hata alırsınız, onu da belirteyim.

Faydalı olması dileğiyle.


Related Posts Plugin for WordPress, Blogger...