Hayatınızın önemli bir kısmında uzak masaüstü bağlantıları ile başka makinalarda çalışıyorsanız, bu bağlantıları yönetmek bir süre sonra sıkıcı bir hal alabiliyor ve zaman kaybına neden olabiliyor. Kendim de bu tür problemlerle karşılaştığım için sizlere bahsedeceğim Palantir adlı uygulamayı yazdım.

Palantir, tek bir uygulama altında birden fazla uzak masaüstü bağlantısı açmanıza ve bu bağlantıları yönetme işlemlerini yapmanıza olanak veren bir uygulama.

Palantir hakkında daha detaylı bilgi ile uygulama ve kaynak kodlarına www.isilorhanel.net/palantir adresinden ulaşabilirsiniz.

    Merhabalar,

    Bilindiği üzere uzak masaüstü bağlantısı oluşturma bize başka bir bilgisayara kendi bilgisayarımız üzerinden ulaşabilme imkanı verir. Kendi belirlediğimiz birtakım özellikleri önceden ayarlayarak (bağlantı esnasında diskleri paylaştırma, bağlanacağımız bilgisayara hangi ekran çözünürlüğüyle bağlanacağımız gibi) uzaktan bağlanabilme izni verilmiş bir bilgisayarda kendi bilgisayarımızdaymış gibi çalışabiliriz. Windows’un default olarak Accessories – Communications menüsü altında bulunan Remote Desktop Connection tool’u ile biraz önce bahsettiğim ayarları yapıp bağlantı oluşturmak oldukça basittir. Ancak bu tool’un sundukları ile yetinmiyorsak, kendi remote bağlantılarımızı oluşturup, bu bağlantıları saklayıp yönetebileceğimiz bir uygulama yazmak da .Net ile bize sunulan component’ler içinde bulunan Microsoft RDP Client Control  ile mümkündür. Ben bu makalemde Microsoft RDP Client Control ile kend
i yazdığımız Windows uygulamalarında uzak masaüstü bağlantıları (Remote Desktop Connection) oluşturma ve bu bağlantıları yönetme hakkında bilgi vereceğim.

   
İlk olarak kontrolü bir Windows uygulamasında nasıl kullanmaya başlayabileceğimizi görelim. Bir Windows uygulaması oluşturalım ve Toolbox’a sağ tıklayıp Choose Items…’a tıklayalım:


    Ardından açılan pencerede COM Components sekmesine tıklayalım ve listeden Microsoft RDP Client Control’u seçelim:


 



    OK’e basıp pencereyi kapadıktan sonra Toolbox’a Microsoft RDP Client Control eklenmiş olacaktır:



    Kontrolü Toolbox’dan sürükleyip formumuza bırakarak kullanmaya başlayabiliriz.

    Şimdi küçük bir uygulamada bu kontrolün belli başlı property ve metodlarını kullanarak remote bir bağlantı oluşturalım. Windows formuna toolbox’dan Microsoft RDP Client Control’u sürükleyip bırakalım ve Dock property’sini Fill olarak set edelim:



   Şimdi de formun Load’ında remote bağlantıyı açmamızı sağlayacak olan aşağıdaki kodu yazalım:




private void Form1_Load(object sender, EventArgs e)
{
    rdpc.Server = “isil”;
    rdpc.UserName = “io”;
    rdpc.Domain = “BILGEADAM”;
    rdpc.AdvancedSettings5.ClearTextPassword = “***”;
    rdpc.AdvancedSettings5.RedirectDrives = true;
    rdpc.AdvancedSettings5.RedirectPorts = false;
    rdpc.AdvancedSettings5.RedirectPrinters = true;
    rdpc.AdvancedSettings5.RedirectSmartCards = false;
    rdpc.DesktopHeight = 950;
    rdpc.DesktopWidth = 1580;
   

   

    rdpc.Connect();     
}

    Uygulamayı çalıştırdığımızda remote bağlantımız oluşturulacaktır:



    Kodda kontrolün bağlanacağı makinanın adı, kullanıcı adı, şifre, domain bilgisi gibi temel bilgileri set ettik. Ardından da remote bilgisayara bağlanıldığında disk sürücüsü, port, printer ve smart card gibi bileşenlerden erişebilmek istediklerimizi set ettik. Kontrolün görüntüleyeceği makinanın masaüstü genişlik ve yükseklik ayarlarını da set ettikten sonra Connect metodu ile bağlanmasını sağladık.

    Bu örnekten sonra şimdi de uygulamamıza yeni bir form ekleyelim ve form üstündeki butona tıkladığımızda açılan formdaki alanları doldurarak remote bağlantı açalım. Eklediğimiz formu aşağıdaki gibi dizayn edelim:


 



    Form üstündeki Yeni Bağlantı butonuna tıkladığımızda da açılacak olan ekranı aşağıdaki gibi tasarlayalım:


 



    Ardından ana formdaki butona tıkladığımızda çalışacak olan kodu yazalım:
 




public string makinaAdi = “”;
public
string kullaniciAdi = “”;
public
string domainAdi = “”;
public
string sifre = “”;

private
void btnYeniBaglanti_Click(object sender, EventArgs e)
{
    frmYeniBaglanti
insFrmYeniBaglanti = new frmYeniBaglanti();
    insFrmYeniBaglanti.Owner = this;
    insFrmYeniBaglanti.ShowDialog();
    axMsRdpClient41.Server = makinaAdi;
    axMsRdpClient41.UserName = kullaniciAdi;
    axMsRdpClient41.Domain = domainAdi;
    axMsRdpClient41.AdvancedSettings5.ClearTextPassword = sifre;
    axMsRdpClient41.Connect();   
}


    Ardından da Yeni Bağlantı formundaki Bağlan butonuna bastığımızda çalışacak olan kodu yazalım:




private void btnBaglan_Click(object sender, EventArgs e)
{
    ((frmBaglan)this.Owner).makinaAdi = txtMakinaAdi.Text;
    ((frmBaglan)this.Owner).kullaniciAdi = txtKullaniciAdi.Text;
    ((frmBaglan)this.Owner).domainAdi = txtDomainAdi.Text;
    ((frmBaglan)this.Owner).sifre = txtSifre.Text;
    this
.Close();
}

    Yazdığımız bu kod bloklarında ilk olarak Yeni Bağlantı formunun bir instance’ını aldık ve Owner property’sine ana formu atadık. Ardından ShowDialog ile bağlantı özelliklerini gireceğimiz formu açtık ve ana formda class level tanımladığımız değişkenleri RDP Client Control nesnesinin ilgili property’lerine atadık. Yeni bağlantı formunda bulunan Bağlan butonunun click event’inde ise ana formumuzda tanımladığımız class level değişkenlere form üstündeki kontrollerin değerlerini atadık.

    Artık kodu derleyip çalıştırdığımızda ve ilgili alanları doldurduğumuzda remote bağlantı oluşturabiliriz. Siz de sürekli remote bağlantılarla çalışıyorsanız yaptığımız örneği daha da genişleterek sık kullandığınız remote bağlantıları tuttuğunuz, yeni bağlantı oluşturup kaydettiğiniz veya sildiğiniz bir uygulama yazabilirsiniz.

    RDP Client Control kullanarak benim yazmış olduğun bir uzak masaüstü bağlantı yönetme uygulamasına ve kodlarına www.isilorhanel.net/palantir adresinden ulaşabilirsiniz.

    Makalemin faydalı olması dileğiyle.

    Işıl Orhanel

Combobox’a herhangi bir enum’u datasource olarak vermek için Enum class’ının GetValues fonksiyonu sonucu dönen array’i combobox’ın DataSource property’sine atayabilirsiniz. Örneğin;

comboBox1.DataSource = Enum.GetValues(typeof(ÖğeleriniListelemekİstediğinizEnum));