Globaler Hotkey in der KonsolenanwendungC#

Ein Treffpunkt für C#-Programmierer
Guest
 Globaler Hotkey in der Konsolenanwendung

Post by Guest »

Weiß jemand, wie man die API-Aufrufe RegisterHotKey/UnregisterHotKey in einer Konsolenanwendung verwendet? Ich gehe davon aus, dass das Einrichten/Entfernen des Hotkeys dasselbe ist, aber wie erhalte ich den Rückruf, wenn die Taste gedrückt wurde?
Jedes Beispiel, das ich sehe, ist für Winforms und verwendet protected override void WndProc(ref Message m){...}, das nicht verfügbar ist Ich.

Update:
Was ich habe, ist unten, aber das Ereignis wird nie getroffen. Ich dachte, es könnte daran liegen, dass beim Laden von ConsoleShell die weitere Ausführung blockiert wird, aber selbst wenn ich SetupHotkey in einen anderen Thread einfüge, passiert nichts. Irgendwelche Gedanken?

Code: Select all

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(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);
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post