23 Nisan 2016 Cumartesi

c# webclient timeout ekleme

public class WebClientEx : WebClient
 {
     public int Timeout {get; set;}

     protected override WebRequest GetWebRequest(Uri address)
     {
        var request = base.GetWebRequest(address);
        request.Timeout = Timeout;
        return request;
     }
 }
Usage:
 var myClient = new WebClientEx();
 myClient.Timeout = 900000 // Daft timeout period
 myClient.UploadData(myUri, myData);

artık ürettiğiniz metodu kullanıcaksınız webclientEx olucak yani ..

c# ile ftp upload webclient

private static void Upload(string ftpServer, string userName, string password, string filename)
{
   using (System.Net.WebClient client = new System.Net.WebClient())
   {
      client.Credentials = new System.Net.NetworkCredential(userName, password);
      client.UploadFile(ftpServer + "/" + new FileInfo(filename).Name, "STOR", filename);
   }
}
Metod:
Upload("ftp://ftpserver.com", "TheUserName", "ThePassword", @"C:\file.txt");

19 Nisan 2016 Salı

c# htmlagilitypack

Temposu yüksek bir öğrenim dönemini geride bırakmışken dönem boyunca üzerinde çalıştığım projede kullandığım ve oldukça yararını gördüğüm yapıları paylaşmanın tam zamanı.
Geliştirdiğim projenin hazırlık aşamasında yüklü bir miktarda veriyi ilişkili internet sitelerinden toplamam gerekiyordu. İlk iş olarak bu işlemi nasıl gerçekleştirebileceğimin araştırmasına başlamak oldu. Karşıma bu konuda ilk çıkan yöntem Regex(Regular Expression) kullanımı oldu. Yüzeysel olarak anlatmak gerekirse Regex, veri toplayacağınız sitenin HTML kaynak kodu üzerinde sizin oluşturduğunuz regular expression stringlerini arayarak bulunması string ile eşleşen alandaki veriye erişmenize imkan tanıyor. Fakat, Regex stringlerini tanımlamak zaman alıyor. Her farklı işlem için ayrı bir Regex string oluşturmak gerekiyordu.
Araştırmaya devam ederken HTML Agility Pack kütüphanesi ile karşılaştım. HTML Agility Pack kütüphanesinin temel mantığı  HTTP protokolünü ve HTML dilini kullanan sistemlere .NET yapısının  sunmuş olduğu ilgili sınıflar aracılığı ile bağlantı kurup, verileri toplamak ve düzenleyip istediğimiz biçimdeki bilgilere dönüştürmektir.
HTML Agility Pack kütüphanesine http://htmlagilitypack.codeplex.com/adresinden ulaşabilirsiniz.
Küçük ve basit bir konsol uygulaması ile HTML Agility Pack kütüphanesinin kullanımını görelim. Bu uygulamada bloğum içerisinndeki postları çekerek txt dosyasına kaydedebileceğimizi göreceğiz.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using HtmlAgilityPack; 
using System.Web;
using System.Net;
using System.Collections;
using System.Data;
using System.Text.RegularExpressions;
namespace HTMLAgilityTest
{
class Program
{
static void Main(string[] args)
{
icerikAl();
}
static void icerikAl()
{
int sayac = 1;
string adres = "https://muratengun.wordpress.com"; //Veri çekeceğimiz adres
string response = HtmlSayfasıAl(adres);
StreamWriter sr = new StreamWriter("içerik.txt", true, Encoding.GetEncoding("UTF-8")); //Türkçe karakterler için encoding
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(response);
//Ihtiyacımız olan veri <div class="content"> tagi arasinda foreach dongusu ile tüm <div class="content"> taglerini dolaşıp içerisindeki texti alıyoruz
foreach (HtmlNode icerik in doc.DocumentNode.SelectNodes("//div[@class='content']"))
{
sr.WriteLine("İcerik " + sayac + " " + icerik.InnerText + "\n");
Console.WriteLine("İcerik "+sayac+" "+ icerik.InnerText+"\n");
}
}
//Bu method ile veri çekeceğimiz adresin HTML kaynak kodunu bir string içerisinde tutuyoruz.
static string HtmlSayfasıAl(string strURL)
{
String strResult;
WebResponse objResponse;
WebRequest objRequest = HttpWebRequest.Create(strURL);
objResponse = objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream(), Encoding.GetEncoding("UTF-8"))) 
{
strResult = sr.ReadToEnd();
sr.Close();
}
return strResult;
}
}

15 Nisan 2016 Cuma

c# uygulama gizleme


Code: CSharp
using System.Diagnostics;               // For prcesss related information using System.Runtime.InteropServices;   // For DLL importing  
Now declare these variables 

Code: CSharp
private const int SW_HIDE = 0;
Now declare win32 function ShowWindow 

Code: CSharp
[DllImport("User32")] private static extern int ShowWindow(int hwnd, int nCmdShow);
The above function accepts 2 parameters hWnd is handle of a window whose state we needs to be modified and nCmdShow contains integer value which denotes state. Here are the list of available states
Code:
SW_HIDE             0
SW_SHOWNORMAL       1
SW_NORMAL           1
SW_SHOWMINIMIZED    2
SW_SHOWMAXIMIZED    3
SW_MAXIMIZE         3
SW_SHOWNOACTIVATE   4
SW_SHOW             5
SW_MINIMIZE         6
SW_SHOWMINNOACTIVE  7
SW_SHOWNA           8
SW_RESTORE          9
SW_SHOWDEFAULT      10
SW_FORCEMINIMIZE    11
SW_MAX              11
Now the main problem is how to get handle of a particular window. Its simple

Process[] processRunning = Process.GetProcesses();

This will return array of all the processes. After this you can use foreach loop to iterate through each process in the array. 

Code: CSharp
int hWnd; Process[] processRunning = Process.GetProcesses(); foreach (Process pr in processRunning) {     if (pr.ProcessName == "notepad")     {         hWnd = pr.MainWindowHandle.ToInt32();         ShowWindow(hWnd, SW_HIDE);     } }
Note Remember that it will just Hide the notepad process and not kill it. You need to be killing all the notepad.exe's running in the background through task manager. If you even wish to kill the process use
Code: CSharp
pr.Kill();
inside the if block.

11 Nisan 2016 Pazartesi

C# Listbox Kullanımı

C# Listbox Kontrolü Kullanımı

Listbox, Windows form uygulamalarında sıklıkla kullanılan, text türündeki verileri  alt alta liste şeklinde sıralayan ve saklayan bir kontroldür. Listbox kontrolünün kullanışlı birçok özelliği ve metodu bulunmaktadır. Şimdi bu kontrolün işimize en çok yarayan özelliklerini örnekler üzerinden anlatalım.

Listbox’a Veri Ekleme

Bu örnekte TextBox’a girilen değer, Buton’a tıklandığında Listbox’a eklenmektedir.
listbox kayıt ekleme
Uygulamayı tamamlamak için aşağıdaki ekran görüntüsünü oluşturduktan sonra buttona çift tıklayarak aşağıdaki kodu ekleyiniz.
Items Özelliği: Listbox ile ilgili birçok işlem, Items özelliği ile gerçekleştirilir. ListBox’a eklenen her değer string türünde bir koleksiyona dahil edilir.
AddRange() metoduyla dizi değişkenlerinin tamamı ListBox’a eklenebilir.

ListBox İçerisindeki Değerleri Silme

Listbox içersindeki tüm değerleri silmek için Clear() metodu kullanılır.
Eğer sadece istenen değerler silinecekse, Remove() metodu kullanılır. Remove metodu ile kendisine parametre olarak verilen değer liste içerisinde bulunarak silinir.
Yukarıdaki kod liste içerisindeki ilk Ankara verisini silecektir. Eğer birden fazla aynı değer silinecekse bir döngü kullanılabilir.
Silinecek verinin satır numarası biliniyorsa RemoveAt() metodu kullanışlı olabilir.
Yukarıdaki kod ile listede yer alan 2 nolu kayıt silinir.

ListBox Eleman Sayısını Öğrenme

Eğer liste üzerinde bir döngü çalıştıracaksanız liste elemanlarının sayısını bilmek gerekir. ListBox içerisinde ki eleman sayısını count() metoduyla öğrenebiliriz.
Yukarıdaki kod çalıştırıldığında “Kayıt Sayısı:4” mesajı ekranda gösterilir.

Seçili Kayıdın Index Numarasını Öğrenme

Listbox içerisindeki kayıtların üzerine tıklayarak kayıtlar arasından seçim yapabiliriz. Bu işleme sıklıkla ihtiyaç duyulduğu için bir örnek ile anlatalım.
Listboxdaki değerin üzerine çift tıklandığında bu değeri listeden silen uygulamayı yapalım.
listbox kayıt silme

ListBox İçerisinde Birden Çok Kayıdın Seçilmesi

ListBox’ın içerisinde normalde sadece tek bir satır seçilebilir. Ama ihtiyaca göre birden fazla kaydın seçilmesi gerekiyorsa SelectionMode özelliği kullanılabilir.
Yukarıdaki kod yardımıyla ctrl, shift ve yön tuşlarıyla Listbox içerisinde çoklu seçim yapılabilir.
ListBox’ın özelliklerinin hepsi yukarıdakiler değil, fakat en çok ihtiyaç duyulanları anlatmaya çalıştım. Konuyla ilgili sorularınızı bana iletebilirsiniz.