C# klavye tuşu basıyorum ancak sadece menüde işe yarıyor

veyiez

Centipat
Katılım
6 Haziran 2021
Mesajlar
18
Daha fazla  
Cinsiyet
Erkek
if (e.KeyData == Keys.Escape) { this.run = false; this.mouseClicksThisRun = 0; SetMouseClickLabel(mouseClicksThisRun); EnableSettingFields(); MessageBox.Show("Kapatıldı (Hoşcakal)!!!"); }


Arkadaşlar, bu kod sadece uygulama üzerindeyken kapanıyor. Ben diyorum Chrome'dayım ESC basayım kapansın, bilen var mı?
 
Son düzenleyen: Moderatör:
if (e.KeyData == Keys.Escape) { this.run = false; this.mouseClicksThisRun = 0; SetMouseClickLabel(mouseClicksThisRun); EnableSettingFields(); MessageBox.Show("Kapatıldı (Hoşcakal)!!!"); }


Arkadaşlar, bu kod sadece uygulama üzerindeyken kapanıyor. Ben diyorum Chrome'dayım ESC basayım kapansın, bilen var mı?
İyi çalışmalar hocam, bunun için hotkey atamanız gerekir. User32.dll içerisindeki RegisterHotkey'i kodunuza çağırıp kullanabilirsiniz.
 
Chrome üzerindeyken ESC tuşunu kontrol etmek istiyorsan 2 şey yapmanız gerekiyor. Windows API'den ESC tuşunun basılıp basılmadığını kontrol etnej ve bu kontrolü arka planda sürekli olarak gerçekleştirmek. Bunun için InteropServices kullanmak gerekiyor.

[CODE lang="csharp" title="C#"]public static const int BTN_ESC = 0x1B; //ESC tuşunun kodu.

[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int key);
//Windows API'den parametrede verilen tuşun basılıp basılmadığını çekiyoruz.
//Bu metod C++ metodu olduğundan InteropServices kullanmamız gerekti.

public bool KontrolEtESC()
{
short state = GetAsyncKeyState(BTN_ESC);
return state > 0;
}

//Gelen değer 0'dan büyükse tuşa basılıyor demektir.[/CODE]


Bir de bunu sürekli kontrol edecek bir Thread mekanizmasına ihtiyacınız var. Bunu da araştırarak yapabilirsiniz.
 
Chrome üzerindeyken ESC tuşunu kontrol etmek istiyorsan 2 şey yapmanız gerekiyor. Windows API'den ESC tuşunun basılıp basılmadığını kontrol etnej ve bu kontrolü arka planda sürekli olarak gerçekleştirmek. Bunun için InteropServices kullanmak gerekiyor.

[CODE lang="csharp" title="C#"]public static const int BTN_ESC = 0x1B; //ESC tuşunun kodu.

[DllImport("user32.dll")]
public static extern short GetAsyncKeyState(int key);
//Windows API'den parametrede verilen tuşun basılıp basılmadığını çekiyoruz.
//Bu metod C++ metodu olduğundan InteropServices kullanmamız gerekti.

public bool KontrolEtESC()
{
short state = GetAsyncKeyState(BTN_ESC);
return state > 0;
}

//Gelen değer 0'dan büyükse tuşa basılıyor demektir.[/CODE]


Bir de bunu sürekli kontrol edecek bir Thread mekanizmasına ihtiyacınız var. Bunu da araştırarak yapabilirsiniz.
Böyle yapmak verimsiz olacaktır hocam. En doğru kullanım RegisterHotKey ile olacaktır. Thread çalıştırmaya gerek yok. Elinize sağlık.
 
Böyle yapmak verimsiz olacaktır hocam. En doğru kullanım RegisterHotKey ile olacaktır. Thread çalıştırmaya gerek yok. Elinize sağlık.
kod buraya yazarmısın olmadı yapamadım chrome kastım arka planda bir türlü örnek esc bastımda kapanmıyor sadece yazılım üstündeyken kapanıyor
 

Yeni konular

Geri
Yukarı