c# web browser document text html kodu sorunu?

elessar (65) 10 yıl önce sordu

C# form uygulamasında web browser üzerinde video açmak istiyorum. 

WebBrowser web = new WebBrowser();
                                            web.Location = new Point(200,200);
                                            web.Size = new Size(200,200);
                                            web.DocumentText = "<iframe src="http://vk.com/video_ext.php?oid=231360946&amp;id=167591129&amp;hash=4b1b668f4b87f681&amp;hd=2" width="643" height="385" frameborder="0" cd_frame_id_="d4cea1159ac698e2e3bce2cce767d0a4"></iframe>";
                                            this.Controls.Add(web);

bu kodu yazdığımda ise flash hatası almaktayım. Sorunu nasıl çözebilirim?

Toplam 2 cevap


alattin (17125) 10 yıl önce cevapladı

Aldığınız hata tam olarak nedir bilmiyorum fakat sizin kodlarınızı biraz düzenledim ve youtube üzerinden bir video ekledim., test ettim çalışıyor, şu şekilde deneyin:

 void video()
        {
            string _embeddedpage = @"
            <html>
                <body>
                    <iframe  type='text/html' width='640' height='385'
                        src='http://www.youtube.com/embed/SfjfaFiy7LE' frameborder='0'>
                    </iframe>
                </body>
            <html>";
            WebBrowser web = new WebBrowser();
            web.Location = new Point(200, 200);
            web.Size = new Size(200, 200);
            web.DocumentText = _embeddedpage;
            this.Controls.Add(web);
        }

Düzenleme:

Windows form uygulamalarında Webbrowser kontrolü normal Internet Explorer'dan çok farklı davranıyor. Örneğin Javascript ve Css'leri yorumlarken hatalar ile karşılaşabilirsiniz. Bunun önüne geçmek için bazı özellikleri açmalısınız.

VK.com videolari javascript gerektirdiğinden muhtemelen yukarıdaki kod vk.com videolarında sorun çıkartacaktır.

WebBrowser kontrolü ile daha öncede soru sormuşsunuz. Sıkıntı yaşamamanız için tarayıcı özelliklerini açacak ve bu tür sorunla ile karşılaşmamamını sağlayacak bir kod paylaşıyorum:

using Microsoft.Win32;
using System;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            OzellikKontrolleriniAktifEt();
        }

        private void btnVideo_Click(object sender, EventArgs e)
        {
            WebBrowser web = new WebBrowser();
            web.Location = new Point(0, 0);
            web.Size = new Size(643, 385);
            web.DocumentText = "<iframe src=\"http://vk.com/video_ext.php?oid=231360946&amp;id=167591129&amp;hash=4b1b668f4b87f681&amp;hd=2\" width=\"643\" height=\"385\" frameborder=\"0\" cd_frame_id_=\"d4cea1159ac698e2e3bce2cce767d0a4\"></iframe>";
            this.Controls.Add(web);
        }



        private void OzellikKontrolleriniAktifEt()
        {
            // Detaylı bilgi: http://msdn.microsoft.com/en-us/library/ee330720(v=vs.85).aspx

            var fileName = System.IO.Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);

            if (String.Compare(fileName, "devenv.exe", true) == 0 || String.Compare(fileName, "XDesProc.exe", true) == 0)
                return;

            TarayiciOzellikAnahtarlariniAyarla("FEATURE_DOMSTORAGE ", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_GPU_RENDERING ", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI  ", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_NINPUT_LEGACYMODE", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_DISABLE_LEGACY_COMPRESSION", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_LOCALMACHINE_LOCKDOWN", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_BLOCK_LMZ_OBJECT", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_BLOCK_LMZ_SCRIPT", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_TABBED_BROWSING", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_VALIDATE_NAVIGATE_URL", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_WEBOC_DOCUMENT_ZOOM", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_WEBOC_POPUPMANAGEMENT", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_WEBOC_MOVESIZECHILD", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_ADDON_MANAGEMENT", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_WEBSOCKET", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_WINDOW_RESTRICTIONS ", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_XMLHTTP", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_BROWSER_EMULATION", fileName, TarayiciEmulasyonModunuGetir());
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_AJAX_CONNECTIONEVENTS", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_DISABLE_NAVIGATION_SOUNDS", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_SCRIPTURL_MITIGATION", fileName, 1);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_SPELLCHECKING", fileName, 0);
            TarayiciOzellikAnahtarlariniAyarla("FEATURE_STATUS_BAR_THROTTLING", fileName, 1);
        }

        private UInt32 TarayiciEmulasyonModunuGetir()
        {
            int browserVersion = 7;
            using (var ieKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer",
                RegistryKeyPermissionCheck.ReadSubTree,
                System.Security.AccessControl.RegistryRights.QueryValues))
            {
                var version = ieKey.GetValue("svcVersion");
                if (null == version)
                {
                    version = ieKey.GetValue("Version");
                    if (null == version)
                        throw new ApplicationException("Microsoft Internet Explorer gereklidir!");
                }
                int.TryParse(version.ToString().Split('.')[0], out browserVersion);
            }

            UInt32 mode = 11001; // Internet Explorer 11 
            switch (browserVersion)
            {
                case 7:
                    mode = 7000; //  Internet Explorer 7 Standart mod
                    break;
                case 8:
                    mode = 8000; // Internet Explorer 8
                    break;
                case 9:
                    mode = 9000; // Internet Explorer 9.
                    break;
                case 10:
                    mode = 10000; // Internet Explorer 10
                    break;
                default:
                    // use IE10 mode by default
                    break;
            }

            return mode;
        }
        private void TarayiciOzellikAnahtarlariniAyarla(string feature, string appName, uint value)
        {
            using (var key = Registry.CurrentUser.CreateSubKey(
                String.Concat(@"Software\Microsoft\Internet Explorer\Main\FeatureControl\", feature),
                RegistryKeyPermissionCheck.ReadWriteSubTree))
            {
                key.SetValue(appName, (UInt32)value, RegistryValueKind.DWord);
            }
        }
    }
}

indirme linki : Örnek Windows Forms C# vk.com video WebBrowser projesini buradan indirebilirsiniz

elessar (65) 10 yıl önce cevapladı

Ayrıntılı cevabınız için teşekkür ederim. vk video linkini direk navigate ettiğimde önceden çalışmıyordu. yazmış oldugunuz kodları ilave ettikten sonra çalıştı. Fakat

WebBrowser web = new WebBrowser();
            web.Location = new Point(200, 200);
            web.Size = new Size(200, 200);
            web.DocumentText = _embeddedpage;
            this.Controls.Add(web);

Bu şekilde yazınca Flash player hatası veriyor.

Alttaki Resim ise Url NAvigate olayı

alattin 10 yıl önce

Bendeki örnekte bir flash hatası vermedi (yukarıdaki detaylı kodu ekledikten sonra). Uygulamayi zip olarak Google Drive'a yükledim. Oradan indirip kontrol edebilirsiniz. Sorunsuz çalışıyor.

alattin 10 yıl önce

İndirme linki cevabımın altında.

elessar 10 yıl önce

çok teşekkür ederim. kolay gelsin