2010-12-07 17 views
7

hereAyar uygulama genelindeki kısayol

Ben kullanıcı bir herhangi bir alt pencerede bir kısayol basarsa şekilde uygulama genelindeki kısayol ayarlamak istediğiniz C# sistem çapında küresel kısayol ayarlamak için bir post var Uygulama, belirli bir pencere alacak ve işleyecektir.

Teşekkürler.

cevap

6

Uygulamanız için bir temel form oluşturabilir ve keypreview özelliğini true değerine ayarlayabilir ve keydown olayını işleyebilirsiniz; böylece tüm formlarınız aynı anahtar tanımına sahip olur.

Ayrıca formlarınız için bir kısayol tuşu kaydetmek için aşağıdaki yordamı kullanabilirsiniz, ancak bu yöntemde, her formun yük olayında aynı yöntemi çağırmanız gerekir.

protected override bool ProcessCmdKey(ref Message message, Keys keys) 
{ 
    switch (keys) 
    { 
     case Keys.F2 | Keys.Control: 
      //Process action here. 
      return false; 
    } 

    return false; 
} 

Ayrıca, aşağıdaki yönetilmeyen yöntemleri user32.dll'den de kullanabilirsiniz, ancak elbette bunu tavsiye etmem.

static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint virtualKey); 
private static extern bool UnregisterHotKey(IntPtr hWnd, int id); 
+0

RegisterHotKey ile çalıştım, ancak sistem genelinde çalıştığından, ilgili anahtarları diğer uygulamalarda veya aynı uygulamanın başka bir örneğinde kullanamıyorum. – Liton

+0

Yalnızca uygulama genelinde çalışmak istiyorsanız, ortak temel form yaklaşımını kullanmalısınız. – EricLaw