Touche d'accès rapide à l'application de la console

Personne ne sait comment utiliser le RegisterHotKey/UnregisterHotKey appels de l'API dans une application console? Je suppose que la mise en place/retrait de la touche de raccourci est le même, mais comment puis-je obtenir de l'appellent en arrière quand la touche a été pressée?

Chaque exemple je vois, c'est pour Winforms, et utilise protected override void WndProc(ref Message m){...}, qui n'est pas disponible pour moi.


mise à jour: ce que j'ai est en dessous, mais l'événement n'est jamais atteint. J'ai pensé qu'il pourrait être parce que lorsque vous chargez ConsoleShell il ne bloque la poursuite de l'exécution, mais même si j'ai mis SetupHotkey dans un thread différent, rien ne se passe. Toutes les pensées?

class Program
{
    static void Main(string[] args)
    {
        new Hud().Init(args);
    }
}

class Hud
{
    int keyHookId;


    public void Init(string[] args)
    {
        SetupHotkey();
        InitPowershell(args);
        Cleanup();
    }

    private void Cleanup()
    {
        HotKeyManager.UnregisterHotKey(keyHookId);
    }

    private void SetupHotkey()
    {
        keyHookId = HotKeyManager.RegisterHotKey(Keys.Oemtilde, KeyModifiers.Control);
        HotKeyManager.HotKeyPressed += new EventHandler<HotKeyEventArgs>(HotKeyManager_HotKeyPressed);
    }

    void HotKeyManager_HotKeyPressed(object sender, HotKeyEventArgs e)
    {
        //never executed
        System.IO.File.WriteAllText("c:\\keyPressed.txt", "Hotkey pressed");
    }

    private static void InitPowershell(string[] args)
    {
        var config = RunspaceConfiguration.Create();
        ConsoleShell.Start(config, "", "", args);
    }
}
InformationsquelleAutor Joe | 2010-09-06