2

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

ご協力いただきありがとうございます。

4

3 に答える 3

-1

このようにグローバルkbhookを作成するだけです

于 2013-06-16T13:25:14.380 に答える