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.

6 yorum:

  1. kardeşim ismi nasıl belirliyoruz process ismi derken acıklar mısn acil cevap bekliyorum

    YanıtlayınSil
  2. Değerli kardeşim, task manager'ı açtığınızda processes tabı var, bu tabı açtığınızda sisteminizde çalışan uygulamaları proses isimleriyle görebilirsiniz. Örneğin task manager'ın proses ismi taskmgr.exe olduğu gözüküyor, ya da google chrome browser'ın proses isminin chrome.exe olduğu.

    Buradan görebilirsiniz, selamlarımla.

    YanıtlayınSil
  3. benim işime yaradı teşekkür ederim.

    YanıtlayınSil
  4. ayrıca sitedeki ayetleri de çok beğendim.elinize sağlık.

    YanıtlayınSil
  5. ben tam olarak yapamadım yardımcı olabilir misiniz task manager de ismi neyse aynısını oluşturdum içinede 10001 değerini girdim sonra ne yapmam gerek onu bilemedim

    YanıtlayınSil

Related Posts Plugin for WordPress, Blogger...