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 중국어 웹사이트의 기타 관련 기사를 참조하세요!