13 Mayıs 2012 Pazar

C# ile SendKeys Sınıfı

Merhaba değerli Webkolog.net takipçileri, bugünkü yazımızda C# .NET Framework 4 ile uygulamalarımızda diğer uygulamalara veya kontrollere klavye girdisi göndermemizi sağlayan SendKeys sınıfını yakından inceleyeceğiz. SendKeys sınıfı, otomasyon, test veya erişilebilirlik gibi çeşitli senaryolarda oldukça faydalı olabilir.

SendKeys Sınıfı Nedir?

SendKeys sınıfı, Windows'a klavye ile tuşlara basılmış gibi mesajlar göndermemizi sağlayan statik bir sınıftır. Bu sınıf sayesinde, aktif olan pencereye veya belirli bir kontrole metin gönderebilir, özel tuşlara (örneğin, Enter, Ctrl, Alt) basabilir ve tuş kombinasyonları (örneğin, Ctrl+C, Alt+F4) gönderebiliriz. Bu sınıfı kullanabilmek için System.Windows.Forms namespace'ini projenize dahil etmeniz gerekmektedir.

SendKeys.Send Metodu

SendKeys sınıfının en önemli metodu SendKeys.Send() metodudur. Bu metot, belirtilen tuşları veya metni aktif olan pencereye gönderir.

SendKeys.Send(string keys);
  • keys: Gönderilecek tuşları veya metni içeren bir dizedir.

Tuş Gösterimi ve Özel Karakterler

SendKeys sınıfı, tuşları temsil etmek için özel bir sözdizimi kullanır. İşte bazı yaygın tuşların ve özel karakterlerin gösterimi:

  • Metin: Gönderilecek metin doğrudan yazılır (örneğin, "Merhaba").
  • Özel Tuşlar: Özel tuşlar küme parantezleri içinde belirtilir (örneğin, {ENTER}, {TAB}, {ESC}).
  • Tekrar Eden Tuşlar: Bir tuşu birden fazla kez göndermek için tuş kodundan sonra boşluk bırakarak tekrar sayısını belirtiriz. Örneğin, {1 10} 10 kere "1" tuşuna basar.

Sık Kullanılan Tuşlar ve Gösterimleri

Anahtar Kod
GERİ AL {BACKSPACE}, {BS} veya {BKSP}
SON {END}
BÜYÜK HARF TUŞU {CAPSLOCK}
DEL veya DELETE {DELETE} veya {DEL}
AŞAĞI OK {DOWN}
ENTER {ENTER} veya ~
ESC {ESC}
YARDIM {HELP}
HOME {HOME}
INS veya Ekle {INSERT} veya {INS}
SOL OK {LEFT}
NUM KILIDI {NUMLOCK}
SAYFA AŞAĞI {PGDN}
SAYFA YUKARI {PGUP}
PRINT SCREEN {PRTSC}
SAĞ OK {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
YUKARI OK {UP}
PAUSE {PAUSE}
F1 - F24 {F1} - {F24}
BOŞLUK {SPC}, {SPACE} veya {SPACEBAR}
Sol Windows Tuşu {LWIN}
Sağ Windows Tuşu {RWIN}
Bağlam Menüsü Tuşu {APP}

Tuş Kombinasyonları

SendKeys ile tuş kombinasyonları göndermek için aşağıdaki karakterleri kullanırız:

  • +: Shift tuşu (örneğin, +A Shift+A, +() Shift+Parantez Aç)
  • ^: Ctrl tuşu (örneğin, ^C Ctrl+C)
  • %: Alt tuşu (örneğin, %F4 Alt+F4)

Özel Karakterlerin Gösterimi: Eğer +, ^, %, ~, (, ), [, ], {, } gibi karakterleri literal olarak göndermek istiyorsanız, onları küme parantezleri içine almanız gerekir:

  • {+}: Artı işareti
  • {^}: Şapka işareti
  • {%}: Yüzde işareti
  • {~}: Tilde işareti
  • {(}: Açık parantez
  • {)}: Kapalı parantez
  • {[}: Açık köşeli parantez
  • {]}: Kapalı köşeli parantez
  • {{}: Açık küme parantezi
  • {}}: Kapalı küme parantezi

Örnekler

İşte SendKeys sınıfının farklı senaryolarda nasıl kullanılacağına dair örnekler:

Örnek 1: Not Defterine Metin Yazma
using System.Diagnostics; // Process.Start için
using System.Threading;   // Thread.Sleep için
using System.Windows.Forms; // SendKeys için

public partial class Form1 : Form
{
    private void buttonNotDefterineYaz_Click(object sender, EventArgs e)
    {
        // Not Defterini aç
        Process.Start("notepad.exe");
        // Not Defterinin açılması için biraz bekleyin (uygulamanın yüklenmesi için zaman tanıyın)
        Thread.Sleep(500); // Yarım saniye beklet

        // Not Defterine metin yazın ve Enter tuşuna basın
        SendKeys.Send("Merhaba Webkolog.net{ENTER}");
        SendKeys.Send("Bu bir testtir.");
    }
}
Örnek 2: Bir Formdaki TextBox'a Metin Yazma
using System.Windows.Forms;

public partial class Form1 : Form
{
    // Form yüklendiğinde veya bir buton tıklamasında kullanılabilir
    private void Form1_Load(object sender, EventArgs e)
    {
        // Form üzerinde bir textBox1 kontrolü olduğunu varsayalım
        if (this.Controls.ContainsKey("textBox1"))
        {
            TextBox textBox1 = (TextBox)this.Controls["textBox1"];
            textBox1.Focus(); // TextBox'a odaklan
            SendKeys.Send("Bu metin TextBox'a yazıldı.");
        }
    }
}
Örnek 3: Tuş Kombinasyonu Gönderme (Alt+F4 ile Pencereyi Kapatma)
using System.Windows.Forms;

public partial class Form1 : Form
{
    private void buttonPencereKapat_Click(object sender, EventArgs e)
    {
        // Aktif olan pencereyi Alt+F4 ile kapat
        SendKeys.SendWait("%{F4}"); // % Alt tuşunu, {F4} F4 tuşunu temsil eder
    }
}

SendKeys.SendWait Metodu

SendKeys.Send() metodu, tuşları arka planda gönderir ve hemen geri döner. Eğer tuşların gönderilmesinin tamamlanmasını ve ilgili uygulamanın bu tuşlara tepki vermesini beklemek istiyorsak, SendKeys.SendWait() metodunu kullanabiliriz. Bu metot, tuşlar işlenene kadar çağrı yapan thread'i askıya alır.

SendKeys.SendWait("Webkolog"); // "Webkolog" metnini gönder ve işlenmesini bekle
SendKeys.SendWait("{1 10}"); // 10 kere "1" tuşuna bas ve işlenmesini bekle

Dikkat Edilmesi Gerekenler

  • SendKeys, aktif olan pencereye veya kontrole girdi gönderir. Bu nedenle, doğru pencerenin veya kontrolün aktif olduğundan emin olmalıyız.
  • Farklı uygulamalar, tuşlara farklı şekillerde tepki verebilir. Bu nedenle, SendKeys kullanırken uygulamanın davranışını test etmek önemlidir.
  • SendKeys, kullanıcı etkileşimini simüle ettiği için bazı durumlarda beklenmedik sonuçlara yol açabilir. Özellikle kritik işlemlerde dikkatli kullanılmalıdır.
  • SendKeys metodu, farklı dil ve klavye düzenlerinde sorunlara neden olabilir. Bu nedenle, uluslararası uygulamalarda kullanırken dikkatli olunmalıdır.
---

Evet sevgili Webkolog.net okurları, bu yazımızda C# .NET Framework 4 ile SendKeys sınıfının ne olduğunu, nasıl kullanıldığını ve nelere dikkat edilmesi gerektiğini detaylı bir şekilde inceledik. SendKeys, otomasyon, test ve erişilebilirlik gibi çeşitli senaryolarda işimizi kolaylaştırabilir. Ancak, bu sınıfı kullanırken dikkatli olmalı ve uygulamanın davranışını iyice test etmeliyiz. Umarım bu bilgiler, C# .NET Framework 4 ile uygulamalar geliştirirken size yardımcı olur. Bir sonraki yazımda, C# dilinin diğer önemli yapı taşlarını keşfetmeye devam edeceğiz. Webkolog.net'i takipte kalın!

Hepinize otomasyon dolu ve başarılı kodlama deneyimleri dilerim!

0 yorum:

Yorum Gönder