C# グローバル ホットキー設定ガイド
グローバル ホットキーを使用すると、プログラムがフォーカスされていないときでもキーストロークをキャプチャできます。これは、ショートカット キーを実装したり、キーの組み合わせによってトリガーされる特定のアクションを実行したりする場合に便利です。以下は、C# を使用してグローバル ホットキーを設定する詳細な手順です。
ホットキー処理クラスを作成します
まず、ホットキーの登録とキャプチャを処理するための KeyboardHook
という名前のクラスを作成します。
<code class="language-csharp">public sealed class KeyboardHook : IDisposable { // 导入必要的Win32 API函数 [DllImport("user32.dll")] private static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint vk); [DllImport("user32.dll")] private static extern bool UnregisterHotKey(IntPtr hWnd, int id); // 定义一个类来处理窗口消息 private class Window : NativeWindow, IDisposable { ... // 处理Win32热键消息 protected override void WndProc(ref Message m) { ... // 调用事件以通知父级 if (KeyPressed != null) KeyPressed(this, new KeyPressedEventArgs(modifier, key)); } } private Window _window = new Window(); private int _currentId; // 注册热键 public void RegisterHotKey(ModifierKeys modifier, Keys key) { ... // 注册热键 if (!RegisterHotKey(_window.Handle, _currentId, (uint)modifier, (uint)key)) throw new InvalidOperationException("无法注册热键。"); } }</code>
ホットキーの登録
KeyboardHook
クラスをインスタンス化し、その RegisterHotKey
メソッドを使用して、目的のホットキーの組み合わせを登録します。たとえば、Ctrl、Alt、F12 キーをホットキーとして登録するには:
<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>
ホットキー イベントの処理
ホットキーが押されたときにコードを実行するには、クラス KeyboardHook
の KeyPressed
イベントをサブスクライブします:
<code class="language-csharp">hook.KeyPressed += new EventHandler<KeyPressedEventArgs>(hook_KeyPressed);</code>
イベント ハンドラーでは、必要なアクションやロジックを実行できます。
ログアウトホットキー
メモリ リークを防ぐため、プログラムが終了するとき、またはホットキーが不要になったときは、必ずホットキーをログアウトしてください。
<code class="language-csharp">hook.Dispose();</code>
重要なヒント
NativeWindow
クラスを使用しないでください。 RegisterHotKey
機能 アプリケーションごとにホットキーの組み合わせは 256 個までに制限されています。 以上がWin32 API を使用して C# でグローバル ホットキーを設定する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。