C# でグローバル ホットキー処理に取り組むための最良の方法を含む、この問題に関する同様の質問を読みましたか? C# を使用してグローバル ホットキーを設定します。また、初期段階にあると思われるNuGet パッケージGlobal Hotkeysについても調査しました。
ここでの問題は、それらのほとんどが Winforms 用に設計されているか、おそらく WPF で実行できるように見えることです。彼らが使用している P/Invoke には、ウィンドウ ハンドルが必要なようです。ここでウィンドウのないアプリケーションを考えています。つまり、特定のキー コンボが押された場合を除き、メイン フォームやウィンドウなしで実行するので、実際にはハンドルがない可能性があります。
では、P/Invoke のウィンドウ ハンドルとして生意気な 0 を渡すと、キープレスを処理するウィンドウを探さなくなるのでしょうか? それとも、目に見えないフォーカスできないウィンドウを使用するのが最善の策ですか?
少しコンテキストを追加するために、TTS で使用するウィンドウのないアプリを作成して、制御用のフィードバックを提供します。ここでのターゲット ユーザーは、視覚障害のあるユーザーです。ときどき何かを入力しなければならないことがあるので、必要に応じてフォームを起動できるようにしたいのですが、ほとんどの場合、ウィンドウが乱雑になることはありません。
いくつかのサンプル コード (これが正しく動作するかどうかはまだ確認できません)。
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
ScreenReader.sapiEnable(true);
ScreenReader.SayString("Launching application...");
// bind hotkeys here
Application.Run();
}
// called when the right keyboard shortcut is pressed
static void ExitApp()
{
ScreenReader.SayString("Exiting program");
Application.Exit();
}
ご協力いただきありがとうございます。