2011-06-02 11 views
5

Quiero crear una aplicación simple que tenga un envío de claves (como un atajo de teclado). El caso es que, siempre que la aplicación creada sea una ventana inactiva, el sistema aún reconoce las teclas presionadas del usuario, siempre que el sistema se esté ejecutando.Tecla de acceso directo usando C#

En pocas palabras, es simplemente como presionar (ventana + D) que muestran su escritorio inmediatamente siempre de que aplicación/ventana es usted adentro.

¿Puede alguien ayudarme en cómo puedo hacer esto en C# 2005

+5

Puede usted revise sus otras preguntas y vea marcar las respuestas que le ayudaron correctamente, como la respuesta aceptada (la marca). Esto le dará reputación a aquellos que lo ayudan a usted y a usted mismo, lo que alienta a otras personas a ayudar. –

Respuesta

5

Usar la siguiente:

[DllImport("user32.dll")] 
private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); 
[DllImport("user32.dll")] 
private static extern bool UnregisterHotKey(IntPtr hWnd, int id); 

y

[Flags] 
public enum ModifierKeys : uint 
{ 
    Alt = 1, 
    Control = 2, 
    Shift = 4, 
    Win = 8 
} 

private ModifierKeys _getModifierKeys(bool isAlt, bool isCtrl, bool isShift, bool isWin) 
{ 
    return (isAlt ? ModifierKeys.Alt : 0) | 
      (isCtrl ? ModifierKeys.Control : 0) | 
      (isShift ? ModifierKeys.Shift : 0) | 
      (isWin ? ModifierKeys.Win : 0); 
} 

entonces, para registrar su tecla de acceso directo,

RegisterHotKey(hWndNotify, id, 
        (uint)_getModifierKeys(_isAlt, _isCtrl, _isShift, _isWin), 
        (uint)_key); 

en el huésped CVent, escuchar WM_HOTKEYREADY, a continuación, comprobar si hay coincidencias con su tecla de acceso directo utilizando

public bool Matches(ref Message m) 
{ 
    Keys key = (Keys)(((int)m.LParam >> 16) & 0xFFFF); 
    ModifierKeys modifier = (ModifierKeys)((int)m.LParam & 0xFFFF); 

    if ((key == Key) && 
     (modifier == Modifier)) 
    { 
     return true; 
    } 

    return false; 
} 
Cuestiones relacionadas