C# でのグローバル ホットキーのキャプチャ
C# では、プログラムにフォーカスがない場合でもキーストロークをキャプチャするには特別な処理が必要です。この記事では、他のウィンドウがアクティブな場合でもプログラムがキーの組み合わせに応答できるように、グローバル ホットキーを設定するプロセスについて説明します。
プラットフォーム呼び出しを使用する
Windows オペレーティング システムと対話するために、C# はプラットフォーム呼び出し (DllImport) を使用します。次の DLL 関数はホットキーの設定に不可欠です:
キーボードフッククラスの作成
グローバル ホットキーを処理するには、IDisposable を継承する KeyboardHook クラスを作成します。
<code class="language-csharp">public sealed class KeyboardHook : IDisposable { // ... }</code>
このクラスでは、ホットキー メッセージを受信するためにネストされた Window クラスを作成する必要があります:
<code class="language-csharp">private class Window : NativeWindow, IDisposable { // ... }</code>
ホットキーの登録
ホットキーを登録するには、KeyboardHook クラスの RegisterHotKey メソッドを使用します。
<code class="language-csharp">public void RegisterHotKey(ModifierKeys modifier, Keys key) { // ... }</code>
このメソッドは、内部カウンター (_currentId) をインクリメントし、指定された修飾子とキーを使用して Windows にホットキーを登録します。
ホットキーの押下に応答します
ホットキーが押されると、イベント ハンドラー KeyPressed が起動されます。メイン アプリケーションでこのイベントをサブスクライブし、ホットキーがトリガーされたときに必要なアクションを実行できます。
使用例
この例では、押されたキーを表示するラベル付きのフォームが作成されます。
<code class="language-csharp">public partial class Form1 : Form { // ... }</code>
フォームのコンストラクターで、KeyboardHook インスタンスを作成し、Control、Alt、および F12 のホットキーの組み合わせを登録します。
<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>
ホットキーが押されると、hook_KeyPressed イベント ハンドラーが呼び出され、修飾子と押されたキーでラベルが更新されます。
以上がC# でグローバル ホットキーをキャプチャする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。