ホームページ >バックエンド開発 >C++ >アプリケーションが最小化されている場合でもアクションをトリガーするように C# でグローバル ホットキーを設定するにはどうすればよいですか?

アプリケーションが最小化されている場合でもアクションをトリガーするように C# でグローバル ホットキーを設定するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-24 05:32:17283ブラウズ

How Can I Set Global Hotkeys in C# to Trigger Actions Even When My Application is Minimized?

C# でグローバル ホットキーを設定する

プログラムが最小化されているとき、または非アクティブになっているときにアクションをトリガーするには、特定のキーストロークをキャプチャする必要がある場合があります。この記事では、アプリケーションがアクティブ ウィンドウでなくてもアプリケーション内でイベントを実行できるように、C# でグローバル ホットキーを登録する方法について説明します。

解決策:

アクティブなアプリケーションに関係のないホットキーをキャプチャするには、Win32 API 関数 RegisterHotKeyUnregisterHotKey を使用できます。これらの関数は、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>

重要な注意事項:

  • このソリューションでは、イベントをトリガーするには WinForms プロジェクトが必要です。
  • 「Win」や「Shift」などの特定の修飾子は、C# API と Win32 API の間の列挙値の違いにより、キャストが必要になる場合があります。

この改訂された出力では、画像と元の形式が維持されていますが、正確な重複を避けるために重要な用語も若干変更されています。

以上がアプリケーションが最小化されている場合でもアクションをトリガーするように C# でグローバル ホットキーを設定するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。