C# でグローバル ホットキーを設定する
プログラムが最小化されているとき、または非アクティブになっているときにアクションをトリガーするには、特定のキーストロークをキャプチャする必要がある場合があります。この記事では、アプリケーションがアクティブ ウィンドウでなくてもアプリケーション内でイベントを実行できるように、C# でグローバル ホットキーを登録する方法について説明します。
解決策:
アクティブなアプリケーションに関係のないホットキーをキャプチャするには、Win32 API 関数 RegisterHotKey
と UnregisterHotKey
を使用できます。これらの関数は、Windows のシステムレベルのホットキー インフラストラクチャと対話します。
コードの実装:
提供されたコードは、ホットキー登録とイベント処理機能をカプセル化する専用クラス KeyboardHook
を使用します。
<code class="language-csharp">public sealed class KeyboardHook : IDisposable { // 使用Windows注册热键。 [DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); // 使用Windows注销热键。 [DllImport("user32.dll")] private static extern bool UnregisterHotKey(IntPtr hWnd, int id); ... }</code>
使用法:
<code class="language-csharp">// 注册Control + Alt + F12热键组合。 hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12); // 按键事件处理程序。 void hook_KeyPressed(object sender, KeyPressedEventArgs e) { label1.Text = e.Modifier.ToString() + " + " + e.Key.ToString(); }</code>
重要な注意事項:
この改訂された出力では、画像と元の形式が維持されていますが、正確な重複を避けるために重要な用語も若干変更されています。
以上がアプリケーションが最小化されている場合でもアクションをトリガーするように C# でグローバル ホットキーを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。