> 백엔드 개발 > C++ > 내 응용 프로그램이 포커스에 있지 않은 경우에도 이벤트를 트리거하도록 C#에서 전역 단축키를 설정하려면 어떻게 해야 합니까?

내 응용 프로그램이 포커스에 있지 않은 경우에도 이벤트를 트리거하도록 C#에서 전역 단축키를 설정하려면 어떻게 해야 합니까?

Patricia Arquette
풀어 주다: 2025-01-24 05:22:08
원래의
809명이 탐색했습니다.

C#을 사용하여 이벤트를 트리거하는 전역 단축키 설정(앱이 초점에 있지 않은 경우에도)

이 문서에서는 애플리케이션에 포커스가 없는 경우에도 이벤트가 트리거될 수 있도록 C#에서 전역 단축키를 설정하는 방법을 설명합니다.

질문:

프로그램에 초점이 없을 때(예: Ctrl Alt J) 키 입력을 캡처하여 프로그램 내에서 이벤트를 트리거합니다.

해결책:

경고: 이 코드는 콘솔 애플리케이션에서 이벤트를 실행하지 않습니다. 이벤트 기능을 구현하려면 WinForms 프로젝트를 사용하세요.

사용자 정의 키보드 후크 클래스:

<code class="language-csharp">public sealed class KeyboardHook : IDisposable
{
    private Window _window = new Window();
    private int _currentId;

    public KeyboardHook()
    {
        // ...
        //  按键事件处理
        // ...
    }

    public void RegisterHotKey(ModifierKeys modifier, Keys key)
    {
        // ...
        // 通过内部原生窗口注册热键
        // ...
    }

    public event EventHandler<KeyPressedEventArgs> KeyPressed;
}</code>
로그인 후 복사

이벤트 처리를 위한 창 클래스:

<code class="language-csharp">private class Window : NativeWindow, IDisposable
{
    // ...
    protected override void WndProc(ref Message m)
    {
        // 处理热键按下
        if (m.Msg == WM_HOTKEY)
        {
            // ...
            // 从LParam中提取修饰符和键
            // ...

            // 触发KeyPressed事件
            KeyPressed?.Invoke(this, new KeyPressedEventArgs(modifier, key));
        }
    }

    // ...
}</code>
로그인 후 복사

사용 예:

<code class="language-csharp">public partial class Form1 : Form
{
    private KeyboardHook hook = new KeyboardHook();

    public Form1()
    {
        // ...
        hook.KeyPressed += hook_KeyPressed; //订阅事件
        hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);
        // ...
    }

    void hook_KeyPressed(object sender, KeyPressedEventArgs e)
    {
        // 处理按键事件
    }
}</code>
로그인 후 복사

참고:

  • 사용 예에서는 Ctrl, Alt, F12 키 조합이 단축키로 등록됩니다.
  • (ModifierKeys)1, (ModifierKeys)2 등을 사용하여 수정자 키를 올바르게 변환했는지 확인하세요.

How Can I Set Global Hotkeys in C# to Trigger Events Even When My Application Is Not in Focus?

위 내용은 내 응용 프로그램이 포커스에 있지 않은 경우에도 이벤트를 트리거하도록 C#에서 전역 단축키를 설정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿