İçeriğe atla

24 Nisan 2011

2

C# basit metin işlemleri ile webbrowser uygulaması

Bu yazıyı okuyan herkes en az bir mail hesabı kullanıyordur muhtemelen. Birden fazla mail hesabı olan ve bu hesapları güncel olarak takip etmesi gerekenler de vardır elbet. Her defasında kullanıcı adı ve şifreyi gir oturum aç demekten sıkılanlar için çeşitli tarayıcı eklentileri mevcut tabi. Bizde uygulamamızda bazı c# sınıfları ve basit metin girdi çıktı işlemleri ile kendimize şifrelerimizi hafızasında tutan ve bir tıklama ile mail hesabımızı açan otomatik bir tarayıcı yapacağız.Aşağıdaki gibi görünecek.

Mantıken uygulamamız ilk açıldığında kendisine bir ayar dosyası oluşturacak ve sizden hesaplarınızı eklemenizi isteyecek. Sonrasında ise asıl arayüzümüze geçiş yapıp tek tık ile maillerimizi kontrol edecek. Hadi başlayalım.

İlk olarak girdi çıktı işlemleri için uygulamamıza aşağıdaki sınıfı ekliyoruz.

using System.IO;

Daha sonra uygulamamıza birer adet splitcontainer,webbrowser,groupbox kontrolü ekliyoruz. Sonra groupbox ın içine 4 adet label 3 adet buton 2 adet textbox, bir adet combobox ekliyoruz ve en üstteki labelimizin text ini boşaltıyoruz. Bunu yapmamızın sebebi her eklediğimiz hesap için butonlarımız dinamik bir şekilde oluşacak ve resimde gördüğünüz gibi solda butonlarımız ve sağda da tarayıcımız olacak.

Yukarıdakine benzer bir görünüm elde ettiyseniz işin geri kalan kısmı tamamen kod tarafında olacak. İşleyişimiz şu arkadaşlar.
Form açılışta bir fonksiyonla ayar dosyası var mı yok mu kontrol edecek. eğer ayar dosyası var ise hesap türlerini ve kullanıcı bilgilerini alıp dinamik butonlarımızı oluşturacak. Peki bunu nasıl yapıyoruz?

public static string veriyolu = Application.StartupPath + "\\v3.mb";
public void ayarAL(object sender, EventArgs e)
        {
            if (File.Exists(veriyolu) == false)
            {
                ilkmi = true;
                label5.Text = "Ayar dosyası bulunamadı!"; label5.ForeColor = Color.Lavender;
                splitContainer1.Visible = false;
                groupBox1.Enabled = false;
            }
            else
            {
                   splitContainer1.Visible = true;
                   SR = File.OpenText("v3.mb");
                    string S = SR.ReadLine();
                    string[] satırlar = S.Split('^');
                    for (int i = 0; i < satırlar.Length; i++)
                    {
                        d1 = satırlar[i].Split('#')[0];
                        d2 = satırlar[i].Split('#')[1];
                        d3 = satırlar[i].Split('#')[2];
                        Button buton = new Button();
                        if (d1 == "Gmail") { gKAdi = d2; gSifre = d3; toolTip1.SetToolTip(buton, gKAdi); }
                        buton.Name = "buton";
                        buton.ForeColor = Color.RoyalBlue;
                        buton.Text = d1;
                        buton.Click += new EventHandler(buton_Click);
                        buton.MouseMove += new MouseEventHandler(buton_MouseMove);
                        buton.Size = new Size(80, 25);
                        buton.Location = new Point(x, y);
                        buton.FlatStyle = FlatStyle.Popup;
                        splitContainer1.Panel1.Controls.Add(buton);
                        S = SR.ReadLine(); y += 30;
                    }
                    SR.Close();
                } 
 
        }

Bir döngü yardımı ile butonlarımızı dinamik olarak oluşturduk ve sıra geldi mail hesabımıza giriş yapmayı sağlayacak olan kodlarımıza. İlk olarak webbrowserin DocumentCompleted olayına aşağıdaki gibi Gmail() fonksiyonunu çağıran kodu ekleyelim.

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {if (butonText == "Gmail")
                {
                    Gmail();
                    webBrowser1.Visible = true;
                }
}

Sonra da fonksiyonumuzu yazalım

 public void Gmail()
        {
            webBrowser1.Document.GetElementById("Email").InnerText = gKAdi;
            webBrowser1.Document.GetElementById("passwd").InnerText = gSifre;
            foreach (HtmlElement HtmlElement1 in webBrowser1.Document.Body.All)
            {
                if (HtmlElement1.GetAttribute("value") == "Giriş yap")
                    HtmlElement1.InvokeMember("click");
            }
        }

Son olarak ta dinamik olarak oluşan butonumuzun click eventını yazalım

if (butonText == "Gmail")
            {
                webBrowser1.Navigate("https://www.google.com/accounts/ServiceLogin?service=mail&passive=true&rm=false&continue=http%3A%2F%2Fmail.google.com%2Fmail%2F%3Fui%3Dhtml%26zy%3Dl&bsv=llya694le36z&scc=1<mpl=default<mplcache=2");
                webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
            }

Evet şimdi uygulamamız çalışır hale geldi. Ama ilk programı çalıştırdığımızda oluşturulacak olan ayar dosyamızın kodlarını yazmadık. Onu da yazalım. Aşağıdaki kodu uluştur butonunun click eventına yazalım

File.Create(veriyolu);

sonra bir de ekle butonunun click eventına da şu kodu ekleyelim.

StreamReader dosyaOku = new StreamReader(veriyolu, Encoding.UTF8);
                string eskiVeri= dosyaOku.ReadToEnd();
                dosyaOku.Close();
                StreamWriter dosyaGuncelle = new StreamWriter(veriyolu);
                string yeniVeri=eskiVeri+ "^"+sitecb.Text.ToString() + "#" + kaditb.Text.ToString() + "#" + sfrtb.Text.ToString() ;
                dosyaGuncelle.Write(yeniVeri);
                dosyaGuncelle.Flush();
                dosyaGuncelle.Close();
                MessageBox.Show("Ekleme işlemi başarılı..");

Şuanda uygulamamız tamamlandı. Burda dikkat etmemiz gereken birkaç nokta var. İlki eğer webbrowser componenti meşgul olduğu sürece GmaiL() adlı fonlsiyonumuz çalışmayacaktır. Bir ikinci nokta ise her servis sağlayıcı aynı kodlarla giriş yapmaya izin vermiyor neyazık ki. Ben aşağıdaki uygulamaya Gmail,Yahoo,Hotmail,Mynet ve popüler sosyal paylaşım ağlarından olan FaceBOOK un giriş kodlarını da ekledim. Aşağıdaki linkten uygulamayı indirip kullanabilirsiniz :D

Not:Uygulamada kullanıcı adı yazan kısma tam mail adresinizi yazınız.

2 Comments Post a comment
  1. BEYTULLAH
    Nis 24 2011

    Kullancam haa :-D

    Cevapla
    • Yönetici
      Nis 24 2011

      Free GPU licance :D :D

      Cevapla

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments