C# Windows Forms ile bir ekran klavyesi hazırladım. Tuş vuruşlarını göndermek için Sendkeys.Send()
işlevini kullanıyorum. Tüm harfler ancak i harfleri düzgün çalışıyor. Microsoft Word açıkken ben klavyedeki harf i bastığınızda, o Ctrl + ALT + Ben gönderir ve yazdırma iletişim kutusu açılır. Not Defteri'nde ++ da aynıdır. Ama notepad yazmayı denediğimde iyi çalışıyor.SendKeys ile 'i' harfi gönderme
Kodumda, SendKeys.Send(value);
anahtarlarını gönderirim; burada değer, basılan düğmenin metnidir. Aşağıdaki kodu kullanarak metni alırım:
string s = ((Button)sender).Text;
Neden düzgün çalışmıyor?
Düzenleme: Sadece bir düğme ile yeni bir windows form projesi oluşturdum ve tüm kod aşağıda. Hala çalışmıyor. Herhangi bir fikir takdir edilecektir.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
SendKeys.Send("i");
}
// Prevent form being focused
const int WS_EX_NOACTIVATE = 0x8000000;
protected override CreateParams CreateParams
{
get
{
CreateParams ret = base.CreateParams;
ret.ExStyle |= WS_EX_NOACTIVATE;
return ret;
}
}
}
Geçersiz kılınan işlev, formun odaklanmasını engellemektir. Böylece tuş vuruşlarını odağı olan diğer uygulamaya gönderebiliyorum.
Öyle mi x saniye boyunca düğmeye basarak, bir pencereye anahtarı gönderir? 'Value' nedir, bu bir anahtar kelime değil midir? Bazı duruşlarda, '((MyClass) nesnesiyle' 'yi kullanarak yazmaktan ziyade' '(nesne olarak MyClass)' i kullanarak döküm yapmayı tercih edebilirsiniz. Nesnenin bir sınıf dışı bir istisna atmak yerine, objektif bir MyClass değilse, ikincisi null değerini döndürür. – MoonKnight
Çok üzgünüm. Bunun yerine s değeri olacaktır. Sonuç, ben böyle yapmam bile değişmez: Sendkeys.Send ("i"); –
's' nin elde edildiğini kontrol etmek için bir hata ayıklayıcı kullandınız mı? Bu, sorunu daraltmanıza yardımcı olacaktır. –