Windowsフォームに質問があることは知っていますが、コンソールで機能しないか、少なくとも機能させることができませんでした。コンソールにフォーカスがないのに、キーの押下をキャプチャする必要があります。
質問する
12583 次
1 に答える
15
コンソールアプリケーションでグローバルキーボードフックを作成することもできます。
完全に機能するコードは次のとおりです:
https ://docs.microsoft.com/en-us/archive/blogs/toub/low-level-keyboard-hook-in-c
コンソールアプリケーションを作成しますが、これを機能させるには、 System.Windows.Formsへの参照を追加する必要があります。コンソールアプリがそのdllを参照できない理由はありません。
このコードを使用してコンソールアプリを作成し、コンソールアプリにフォーカスがあるかどうかに関係なく、各キーが押されることを確認しました。
編集
メインスレッドは、アプリケーションが終了するまで、たとえばApplication.Exit()の呼び出しを介して、Application.Run()を実行します。他の作業を行う最も簡単な方法は、その作業を実行するために新しいタスクを開始することです。これを行うリンクされたコードからのMain()の修正バージョンは次のとおりです
public static void Main()
{
var doWork = Task.Run(() =>
{
for (int i = 0; i < 20; i++)
{
Console.WriteLine(i);
Thread.Sleep(1000);
}
Application.Exit(); // Quick exit for demonstration only.
});
_hookID = SetHook(_proc);
Application.Run();
UnhookWindowsHookEx(_hookID);
}
ノート
特定のニーズに応じて特別なキーコンボが押された場合など、コンソールアプリを終了する手段を提供する可能性があります。の中に
于 2012-06-11T22:16:59.040 に答える