C#에서 전역 단축키 캡처
C#에서는 프로그램에 초점이 맞지 않을 때에도 키 입력을 캡처하려면 특별한 처리가 필요합니다. 이 문서에서는 다른 창이 활성화된 경우에도 프로그램이 키 조합에 응답하도록 전역 단축키를 설정하는 과정을 안내합니다.
플랫폼 호출 사용
Windows 운영 체제와 상호 작용하기 위해 C#은 플랫폼 호출(DllImport)을 사용합니다. 단축키 설정에는 다음 DLL 함수가 필수적입니다.
키보드 후크 클래스 만들기
전역 단축키를 처리하려면 IDisposable에서 상속되는 KeyboardHook 클래스를 생성하세요.
<code class="language-csharp">public sealed class KeyboardHook : IDisposable { // ... }</code>
이 클래스에서는 단축키 메시지를 수신하기 위해 중첩된 Window 클래스를 만들어야 합니다.
<code class="language-csharp">private class Window : NativeWindow, IDisposable { // ... }</code>
단축키 등록
핫키를 등록하려면 KeyboardHook 클래스의 RegisterHotKey 메소드를 사용하세요.
<code class="language-csharp">public void RegisterHotKey(ModifierKeys modifier, Keys key) { // ... }</code>
이 메서드는 내부 카운터(_currentId)를 증가시킨 다음 지정된 수정자와 키를 사용하여 Windows에 단축키를 등록합니다.
단축키 누르기에 반응
핫키를 누르면 KeyPressed 이벤트 핸들러가 실행됩니다. 기본 애플리케이션에서 이 이벤트를 구독하고 단축키가 트리거될 때 원하는 작업을 수행할 수 있습니다.
사용예
제공된 예에서는 누른 키를 표시하기 위해 레이블이 있는 양식이 생성됩니다.
<code class="language-csharp">public partial class Form1 : Form { // ... }</code>
양식 생성자에서 KeyboardHook 인스턴스를 생성하고 Control, Alt 및 F12에 대한 단축키 조합을 등록합니다.
<code class="language-csharp">hook.RegisterHotKey(ModifierKeys.Control | ModifierKeys.Alt, Keys.F12);</code>
단축키를 누르면 Hook_KeyPressed 이벤트 핸들러가 호출되고 수정자와 누른 키로 레이블이 업데이트됩니다.
위 내용은 C#에서 글로벌 단축키를 캡처하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!