Кто-нибудь знает, как использовать вызовы API RegisterHotKey/UnregisterHotKey в консольном приложении? Я предполагаю, что настройка/удаление горячей клавиши такое же, но как мне сделать обратный звонок при нажатии клавиши?
Каждый пример, который я вижу, предназначен для Winforms и использует защищенное переопределение void WndProc(ref Message m){..., которое недоступно для me.
обновление: то, что у меня есть, приведено ниже, но событие никогда не происходит. Я думал, что это может быть потому, что когда вы загружаете ConsoleShell, он блокирует дальнейшее выполнение, но даже если я помещу SetupHotkey в другой поток, ничего не произойдет. Есть мысли?
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);
}
}
Подробнее здесь: https://stackoverflow.com/questions/365 ... pplication
Глобальная горячая клавиша в консольном приложении ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Любая горячая клавиша, которую я хочу зарегистрировать, похоже, уже занята.
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-