2009-03-01 10 views
1

C#: Çok tuşlu kısayolları global olarak izlemek için kullanabileceğiniz en iyi kanca hangisidir?C#: Çok tuşlu kısayolları global olarak izlemek için kullanabileceğiniz en iyi kanca hangisidir?

LowLevelKeyboardProc ve KeyboardProc vardır. Windows'da global olarak Alt + Q gibi tuş bileşimlerini izlemek ve basılan Alt + Q temelli bir eylem gerçekleştirmek istiyorum. Kullanılacak en iyi seçenek hangisi olacaktır ve kısayoldaki tüm tuşların, her bir tuşun kanca geri çağrısında birer birer izlenmesi yerine, şu anda tutuluyor mu olduğunu nasıl algılayacağım?

cevap

2

Başka seçeneğiniz yok, C# ile yazabileceğiniz tek kişi WH_KEYBOARD_LL. WH_KEYBOARD, başka bir işlemde enjekte edilebilecek bir DLL yazmayı gerektirir. Yönetilen kod ile mümkün değil, CLR düzgün başlatılamıyor. Ayrıca, RegisterHotKey() öğesini de düşünebilirsiniz. Örnek kod is there, sayfanın aşağısında C# bulacaksınız.

0

Hans Passant'ın yanıtında belirtildiği gibi, teknik olarak WH_KEYBOARD_LL kancasına takmanın dışında bir yol yoktur. Bununla birlikte, size kolay yönetilen bir sarıcı sağlayan bir yönetilen kitaplık MouseKeyHook as nuget vardır. Source code on github. Kısa yolların tespit edilmesinde son zamanlarda destek, anahtar kombinasyonları ve diziler eklenmiştir.

void DoSomething() 
{ 
    Console.WriteLine("You pressed UNDO"); 
} 

Hook.GlobalEvents().OnCombination(new Dictionary<Combination, Action> 
{ 
    {Combination.FromString("Control+Z"), DoSomething}, 
    {Combination.FromString("Shift+Alt+Enter"),() => { Console.WriteLine("You Pressed FULL SCREEN"); }} 
}); 

Daha fazla bilgi için bkz: Detecting Key Combinations and Seuqnces

İşte kullanım örneği
İlgili konular