首頁 > 後端開發 > C++ > 如何在 C# 中設定全域熱鍵以在應用程式最小化時觸發操作?

如何在 C# 中設定全域熱鍵以在應用程式最小化時觸發操作?

Mary-Kate Olsen
發布: 2025-01-24 05:32:17
原創
281 人瀏覽過

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#和Win32 API之間的枚舉值存在差異。

This revised output maintains the image and its original format while rephrasing the text for improved clarity and flow. Key terms are also slightly altered to avoid exact duplication.

以上是如何在 C# 中設定全域熱鍵以在應用程式最小化時觸發操作?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板