none
C# WebBrowser da yeni sayfada açılan tüm linkler yeni sekmede açılsın. RRS feed

  • Genel Tartışma

  • Merhaba, C#ile TabControl kullanacak sekmeli bir webbrowser yaptım. IE11 kullanıyor ve herşey iyi çalışıyor. Ancak eğer IE kullansaydım bazı sitelere giriş yaptıktan sonra o sekmeyi kapatıp yeni popup sayfada açıyor. Bu şekilde siteler var. Demem o ki yeni sayfada veya yeni pencerede açılması gereken sayfaları projemdeki Yeni Sekmede açılmak istiyorum. Bunu bir örnekle gösterebilir misiniz. Şimdiden teşekkürler...
    18 Ağustos 2016 Perşembe 19:28

Tüm Yanıtlar

  • Bir sitede bununla alakalı birşeyler anlatmış acaba benim istediğim şey mi? Linklerde yeni pencereleri mi Yeni Sekmede açıyor , aynı zamanda Pop-up ları da Yeni Sekme yapıyor mu?

    http://stackoverflow.com/questions/5312275/open-new-web-page-in-new-tab-in-webbrowser-control

    19 Ağustos 2016 Cuma 19:48
  • Deleted
    19 Ağustos 2016 Cuma 22:24
  • Dediğin gibi yaptım ama beceremedim. Internet Controls referansını ekledim ama aşağıdaki satırı eklemeye başladığımda hata almaya başlıyorum. Ve Browser olarak TabControl kullanıyorum WebBrowser için NewWindows eventını activex ile nasıl kullanacağım? Ve ilk iki satırı nerede kullanacağım?
    this.wbInternetPenceresi.ActiveXInstance;




    20 Ağustos 2016 Cumartesi 20:44
  • Deleted
    21 Ağustos 2016 Pazar 11:13
  • Dediğin gibi yaptım bu defa window için null değerini alamaz diye bir hata veriyor.

    21 Ağustos 2016 Pazar 18:56
  • Deleted
    23 Ağustos 2016 Salı 02:33
  • Kodları projeye dediğin şekilde ekledim. Ancak F5 ile programı çalıştırdığımda windows için null değerini alamaz şeklinde hata alıyorum. Hatayı da yukarıdaki resimde gösterdim. 

    public Form1()
            {
                SetBrowserVersion();
                InitializeComponent();
                SHDocVw.WebBrowser_V1 window = (SHDocVw.WebBrowser_V1) web.ActiveXInstance;
                window.NewWindow += Window_NewWindow;
            }
    
            private void Window_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
            {
                Processed = true;
                web.Navigate(URL);
            }

    23 Ağustos 2016 Salı 03:25
  • Eğer gerekirse projemin kodlarını da yazıyorum...

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Runtime.InteropServices;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using Microsoft.Win32;
    
    namespace ProxyBrowser
    {
        public partial class Form1 : Form
        {
            WebBrowser web = new WebBrowser();
            private int i = 0;
    
            public Form1()
            {
                SetBrowserVersion();
                InitializeComponent();
                SHDocVw.WebBrowser_V1 window = (SHDocVw.WebBrowser_V1) web.ActiveXInstance;
                window.NewWindow += Window_NewWindow;
            }
    
            private void Window_NewWindow(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
            {
                Processed = true;
                web.Navigate(URL);
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                ProxyIslemleri.Ayarla("proxy ip ve port numarası");
    
                web = new WebBrowser();
                web.ScriptErrorsSuppressed = true;
                web.Dock = DockStyle.Fill;
                web.Visible = true;
                web.DocumentCompleted += Web_DocumentCompleted;
                tabControl1.TabPages.Add("Yeni Sekme");
                tabControl1.SelectTab(i);
                tabControl1.SelectedTab.Controls.Add(web);
                i += 1;
    
                
    
    
            }
    
            private void Web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                tabControl1.SelectedTab.Text = ((WebBrowser)tabControl1.SelectedTab.Controls[0]).DocumentTitle;
            }
    
            private void başlaToolStripMenuItem_Click(object sender, EventArgs e)
            {
                ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(toolStripComboBox1.Text);
                if (!toolStripComboBox1.Items.Contains(toolStripComboBox1.Text))
                {
                    toolStripComboBox1.Items.Add(toolStripComboBox1.Text);
                }
            }
    
            private void btnGeri_Click(object sender, EventArgs e)
            {
                ((WebBrowser)tabControl1.SelectedTab.Controls[0]).GoBack();
            }
    
            private void btnIleri_Click(object sender, EventArgs e)
            {
                ((WebBrowser)tabControl1.SelectedTab.Controls[0]).GoForward();
            }
    
            private void yeniSekmeToolStripMenuItem_Click(object sender, EventArgs e)
            {
                web = new WebBrowser();
                web.ScriptErrorsSuppressed = true;
                web.Dock = DockStyle.Fill;
                web.Visible = true;
                web.DocumentCompleted += Web_DocumentCompleted;
                tabControl1.TabPages.Add("Yeni Sekme");
                tabControl1.SelectTab(i);
                tabControl1.SelectedTab.Controls.Add(web);
                i += 1;
            }
    
            private void sekmeKapatToolStripMenuItem_Click(object sender, EventArgs e)
            {
                if (tabControl1.TabPages.Count - 1 > 0)
                {
                    tabControl1.TabPages.RemoveAt(tabControl1.SelectedIndex);
                    tabControl1.SelectTab(tabControl1.TabPages.Count - 1);
                    i -= 1;
                }
            }
    
            private void toolStripComboBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter)
                {
                    e.SuppressKeyPress = true;
                    ((WebBrowser)tabControl1.SelectedTab.Controls[0]).Navigate(toolStripComboBox1.Text);
                }
            }
    
            void SetBrowserVersion()
            {
                string key = "Software\\Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION";
                string appName = (System.Diagnostics.Process.GetCurrentProcess().ProcessName + ".exe");
                int mode = 10000;
                RegistryKey RKey = Registry.CurrentUser.CreateSubKey(key);
    
                if (RKey.GetValue(appName) == null)
                {
                    RKey.SetValue(appName, mode, RegistryValueKind.DWord);
                    System.Threading.Thread.Sleep(1000);
                }
                RKey.Close();
            }
            
        }
    }
    

    23 Ağustos 2016 Salı 03:46
  • Deleted
    23 Ağustos 2016 Salı 05:27
  • Dediğin gibi yaptım bu defa hata vermedi ama pop-up sayfaları yeni sekmedi açmadı yine pop-up sayfada açtı. Acaba neyi yanlış yapıyorum

    private void Form1_Load(object sender, EventArgs e) { ProxyIslemleri.Ayarla("proxy ip ve port numarası"); try { SHDocVw.WebBrowser_V1 window = (SHDocVw.WebBrowser_V1)web.ActiveXInstance; window.NewWindow += Window_NewWindow; } catch (Exception) { } web = new WebBrowser(); web.ScriptErrorsSuppressed = true; web.Dock = DockStyle.Fill; web.Visible = true; web.DocumentCompleted += Web_DocumentCompleted; tabControl1.TabPages.Add("Yeni Sekme"); tabControl1.SelectTab(i); tabControl1.SelectedTab.Controls.Add(web); i += 1; }

    private void Window_NewWindow1(string URL, int Flags, string TargetFrameName, ref object PostData, string Headers, ref bool Processed)
            {
                Processed = true;
                web.Navigate(URL);
            }


    23 Ağustos 2016 Salı 19:17
  • Deleted
    24 Ağustos 2016 Çarşamba 13:11
  • Dediğin gibi yaptım ancak hala "window null olamaz" diye hata veriyor ve program başlamıyor. 
    24 Ağustos 2016 Çarşamba 19:42