Bolu Beyi tarafından yazıldı Temmuz - 2 - 2013 6 Yorum

Untitled

 

 

 

 

 

Proje başlangıcında formumuza aşağıdaki nesneleri ekliyoruz:

  •  1 adet Webbrowser
  •  7 adet Picturebox
  •  8 adet Buton
  •  2 adet Panel
  •  2 adet Listbox
  •  1 adet Timer
  •  2 adet Metin dosyası

Formun Load Bölümü

Formun load kısmında, tarayıcının açılışında efekt vermek amacıyla timer nesnesi başlatılmıştır. Açılış sayfası da bu kısımda belirtilmiştir. Başlangıçta, geçmiş bilgileri ve sık kullanılanlar bilgileri “bin” klasöründe bulunan text dosyasından “using System.IO” kütüphanesi kullanılarak listbox’a aktarılmıştır.

Url Adres Girişi

Textbox’a yazılan adrese giriş için iki farklı yol bulunmaktadır. İlk olarak, textbox’a adres girildikten sonra, “enter” tuşunun basılmasıyla adrese giriş yapılması sağlanmıştır. Bununla birlikte textbox’ın en sağında bulunan Picturebox nesnesine tıklandığında da adrese giriş yapılabilmektedir.

Tarayıcı Anasayfasının Belirlenmesi

Tarayıcıda ana sayfa olarak “Google” belirlenmiştir. Ana sayfa için oluşturulan Picturebox nesnesinin click event’ine “TarayiciSayfasi.Navigate(“www.google.com.tr”);” kod parçası eklenmiştir.

İleri, Geri, Yenileme ve Durdurma İşlemleri

Mevcut sayfadan bir önceki sayfaya dönüş ve bir sonraki sayfaya gidiş amacıyla iki adet picturebox nesnesi eklenmiştir. Bir önceki sayfa dönüş için, “TarayiciSayfasi.GoBack();” kod parçası; bir sonraki sayfaya gidiş için ise “TarayiciSayfasi.GoForward();” kod parçası kullanılmıştır.

Mevcut sayfayı yenilemek için ve yüklenen sayfayı durdurmak için de iki adet picturebox nesnesi kullanılmıştır. Yenileme için, “TarayiciSayfasi.Refresh();”; durdurma için ise “TarayiciSayfasi.Stop();” kod parçası kullanılmıştır.

Progressbar Görseli

Bir sayfa yüklenirken görsellik katmak amacıyla

http://www.bleier-online.de/blogs/ohne/tuotekategoria/suun-sieni-infektio/index.html

, tarayıcının sağ üst kısmında “progressbar” nesnesi kullanılmıştır. Tarayıcı sayfasının “Navigating” olayında, min, max ve visible durumları ayarlanmıştır.

Geçmiş Bilgisi

Tarayıcının geçmiş bilgisini göstermek amacıyla, üst bölüme bir adet “geçmişi göster” butonu eklenmiştir. Butona tıklanıldığında, tarayıcının sol bölümünde yer alan panel’in visible durumu “true” yapılarak, panel üzerinde yer alan listbox ile kullanıcının geçmiş bilgilerini görebilmesi sağlanmıştır. Tarayıcı sayfasının “DocumentCompleted” olayında, url adresleri listbox’a atılmaktadır. Burada aktarılacak verinin listbox’ta olup olmadığı da kontrol edilerek, boş kalan satırlar temizlenmektedir. Geçmiş bilgilerinin metin dosyasına aktarılması için “FormClosing” olayında, “TextWriter” nesnesi kullanılmıştır. Kullanıcının geçmiş bilgisinde yer alan adreslere gitmesi için listbox’ta yer alan url adreslerine çift tıklanıldığında o adrese gidilmesi sağlanmıştır. Bununla birlikte, Panel içerisinde, seçilen url’yi silmek için, tüm adresleri silmek için ve paneli kapatmak için de 3 adet buton bulunmaktadır. Form kapatılırken, veriler “bin” klasöründe yer alan “Gecmis.txt” dosyasına aktarılmaktadır. Tarayıcı tekrardan açıldığında, text dosyasındaki geçmiş bilgileri formun load bölümünde listboxa aktarılmaktadır.

Sık Kullanılanlar(Favoriler) Bilgisi

Bir adresin sık kullanılanlar listesine eklenmesi için bir adet picturebox nesnesi kullanılmıştır. Bu picturebox’a tıklanıldığında tarayıcının sağ tarafında bulunan listbox’a url adresi eklenmektedir. Geçmiş bilgisinde olduğu gibi burada da, adresin önceden listbox’a eklenip eklenmediği kontrol edilerek, boş kalan satırlar temizlenmektedir. Yine geçmiş bilgisinde olduğu gibi burada da seçilen adresi veya tamamını temizlemek için ve paneli kapatmak için 3 adet buton kullanılmıştır. Bu bilgileri kaydetmek amacıyla, “FormClosing” olayında “bin” klasöründe yer alan “SikKullanilanlar.txt” dosyasına veriler aktarılmaktadır. Burada da listbox’ta yer alan linklere çift tıklanıldığında kullanıcının o adresi gitmesi sağlanmıştır.

Web Tarayıcı Kodları:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;namespace BoluBeyiExplorer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}private void Form1_Load(object sender, EventArgs e)
{
timer1.Start(); //opacity için
this.WindowState = FormWindowState.Maximized;
//tarayıcı giriş sayfası
TarayiciSayfasi.Navigate(“www.bolubeyi.net”);
//Geçmiş ve sık kullanılanlar listboxı için çoklu seçim
LstBoxGecmis.SelectionMode = SelectionMode.MultiSimple;
LstBoxSikKullanilanlar.SelectionMode = SelectionMode.MultiSimple;
//Geçmiş text dosyasından verilerin yüklenmesi
System.IO.StreamReader GecmisGetir = new System.IO.StreamReader(“Gecmis.txt”);
while (!GecmisGetir.EndOfStream)
{
LstBoxGecmis.Items.Add(GecmisGetir.ReadLine());
}
GecmisGetir.Close();
//Sık kullanılanlar text dosyasından verilerin yüklenmesi
System.IO.StreamReader FavorilerGetir = new System.IO.StreamReader(“SikKullanilanlar.txt”);
while (!FavorilerGetir.EndOfStream)
{
LstBoxSikKullanilanlar.Items.Add(FavorilerGetir.ReadLine());
}
FavorilerGetir.Close();

}

private void TxtUrl_KeyPress(object sender, KeyPressEventArgs e)
{

//textbox enter tuşu olayı
if (e.KeyChar == ‘\r’)
TarayiciSayfasi.Navigate(TxtUrl.Text);
}

private void ResimAnasayfa_Click(object sender, EventArgs e)
{
//anasayfa urlsi
TarayiciSayfasi.Navigate(“www.google.com.tr”);
}

private void ResimGeri_Click(object sender, EventArgs e)
{
TarayiciSayfasi.GoBack(); //bir önceki sayfaya dönüş kodu

}

private void ResimIleri_Click(object sender, EventArgs e)
{
TarayiciSayfasi.GoForward(); //bir sonraki sayfaya gidiş kodu
}

private void ResimYenile_Click(object sender, EventArgs e)
{
TarayiciSayfasi.Refresh(); //yenileme kodu
}

private void TarayiciSayfasi_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
TxtUrl.Text = TarayiciSayfasi.Url.ToString(); //açılan sayfanın urlsini textboxa yazdırma
TarayiciProgress.Visible = false;
if (!LstBoxGecmis.Items.Contains(TxtUrl.Text)) //sayfa yüklendiğinde geçmiş listboxına ekleme
{
LstBoxGecmis.Items.Add(TxtUrl.Text);
}
//Geçmiş kaydedilirken, boş kalan satırların silinmesi
for (int i = LstBoxGecmis.Items.Count – 1; i >= 0; i–)
{
if (LstBoxGecmis.Items[i].ToString() == “”)
{
LstBoxGecmis.Items.RemoveAt(i);
}
}
}

private void timer1_Tick(object sender, EventArgs e)
{
this.Opacity += 0.14;
}

private void ResimStop_Click(object sender, EventArgs e)
{
TarayiciSayfasi.Stop(); //sayfa yüklenmesini durdurma kodu
}

private void TarayiciSayfasi_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
//sayfa açılışında progressbar kontrolü
TarayiciProgress.Visible = true;
TarayiciProgress.Value = 0;
TarayiciProgress.Minimum = 0;
TarayiciProgress.Maximum = 1000;
TarayiciProgress.Step = 1000;
TarayiciProgress.PerformStep();
}

private void ResimSikKullanilanlar_Click(object sender, EventArgs e)
{
// Sık kullanılanlara url ekleme
if (!LstBoxSikKullanilanlar.Items.Contains(TxtUrl.Text.Trim()))
LstBoxSikKullanilanlar.Items.Add(TxtUrl.Text);
//Sık kullanılanlar kaydedilirken boş satırların silinmesi
for (int i = LstBoxSikKullanilanlar.Items.Count – 1; i >= 0; i–)
{
if (LstBoxSikKullanilanlar.Items[i].ToString() == “”)
{
LstBoxSikKullanilanlar.Items.RemoveAt(i);
}
}
}

private void BtnGecmis_Click(object sender, EventArgs e)
{
PanelGecmis.Visible = true;
}

private void BtnFavori_Click(object sender, EventArgs e)
{
PanelSikKullanilanlar.Visible = true;
}

private void BtnKapat2_Click(object sender, EventArgs e)
{
PanelGecmis.Visible = false;
}

private void LstBoxGecmis_DoubleClick(object sender, EventArgs e)
{
TarayiciSayfasi.Navigate(LstBoxGecmis.SelectedItem.ToString()); //Geçmiş listboxındaki urlye tıklandığında sayfa açma
}

private void LstBoxSikKullanilanlar_DoubleClick(object sender, EventArgs e)
{
TarayiciSayfasi.Navigate(LstBoxSikKullanilanlar.SelectedItem.ToString()); //sık kullanılanlar listboxındaki urlye tıklandığında sayfa açma
}

private void BtnGecmisSil_Click(object sender, EventArgs e)
{
LstBoxGecmis.Items.Clear(); //geçmiş listboxını temizleme
}

private void BtnSecilenSil_Click(object sender, EventArgs e)
{
//geçmiş listboxından seçili urlleri temizleme
for (int i = LstBoxGecmis.SelectedIndices.Count – 1; i >= 0; i–)
LstBoxGecmis.Items.RemoveAt(LstBoxGecmis.SelectedIndices[i]);
}

private void BtnKapatFavoriler_Click(object sender, EventArgs e)
{
PanelSikKullanilanlar.Visible = false;
}

private void BtnSikKullanilanlarTemizle_Click(object sender, EventArgs e)
{
LstBoxSikKullanilanlar.Items.Clear(); //sık kullanılanlar listboxını temizleme
}

private void BtnSikKullanilanlarSecileniSil_Click(object sender, EventArgs e)
{
// Sık kullanılanlar listboxından seçili urlleri temizleme
for (int i = LstBoxSikKullanilanlar.SelectedIndices.Count – 1; i >= 0; i–)
LstBoxSikKullanilanlar.Items.RemoveAt(LstBoxSikKullanilanlar.SelectedIndices[i]);
}

private void pictureBox1_Click(object sender, EventArgs e)
{
TarayiciSayfasi.Navigate(TxtUrl.Text); // textboxa girilen url’ye gitme
}
public int TxtSayac = 0;
private void TxtUrl_Click(object sender, EventArgs e)
{
//Textboxa her tıklanıldığında tüm urlyi seçmemesi için kontrol
TxtSayac += 0;
if (TxtSayac % 2 == 0)
{
TxtUrl.SelectAll();
TxtSayac++;
}
}

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
//Uygulama kapatılırken geçmiş bilgilerinin, geçmiş text dosyasına aktarılması
TextWriter GecmisYaz = new StreamWriter(“Gecmis.txt”);
String StrGecmis = “”;
foreach (Object StrNesne in LstBoxGecmis.Items)
StrGecmis += StrNesne.ToString() + “\n”;
GecmisYaz.WriteLine(StrGecmis);
GecmisYaz.Close();
GecmisYaz.Dispose();

//Uygulama kapatılırken sık kullanılanlar bilgilerinin, sık kullanılanlar text dosyasına aktarılması
TextWriter FavorilerYaz = new StreamWriter(“SikKullanilanlar.txt”);
String StrFavori = “”;
foreach (Object StrNesne in LstBoxSikKullanilanlar.Items)
StrFavori += StrNesne.ToString() + “\n”;
FavorilerYaz.WriteLine(StrFavori);
FavorilerYaz.Close();
FavorilerYaz.Dispose();
}
}
}

Bugüne kadar 6 yorum yapıldı

  1. merve dedi ki:

    Programın tamamını winrar dosyası olarak gönderebilir misiniz?

    Teşekkür ederim.

  2. Mustafa dedi ki:

    Hocam, bu web browser ile sitenin kaynak kodunu programa değiştirtemez miyiz. Bu konuda hiç bir kaynakta anlatım bulamadım. Yani Ad muncher gibi reklam engelleyici yazılımların yaptığı kaynak koddan yazı silme olayını biliyorsanız anlatablir misiniz? Programa verdiğimiz txt deki kodlar açılan sitede varsa, bunları kaynak koddan silecek ve web browserde silinmiş halini gösterecek, yani mantık bu. Anlatırsanız çok makbule geçer.

  3. Cem dedi ki:

    iyi günler ve iyi bayramlar
    webbrowser içindeki iframelerin kaynak dosyalarını almak istiyorum fakat şöyle bir sıkıntım var.iframe farklı bir subdomaini adres gösterdiği için 0x80070005 hatası alıyorum yanı erişim reddediliyor.Amacım webbrowser içinde bulunan iframelerin kaynak dosyalarını almak ve bunu webbrowser ile yapmak istiyorum.(httpwebrequest yada webclient ile doğrudan çekebiliyorum fakat mesaj atma sitesi olduğu için sürekli yeniden çekmek bilgisayarı kasan bir işlem)Bu işlemi nasıl yapabilirim acaba teşekkürler

You must be logged in to post a comment.