C\#단축 키(시스템 단축 키)응답 을 실현 하 는 방법 을 깊이 이해 합 니 다.
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace KoalaStudio.BookshopManager
{
class HotKey
{
// , 0。
// , 0。 , GetLastError。
[DllImport("user32.dll", SetLastError = true)]
public static extern bool RegisterHotKey(
IntPtr hWnd, //
int id, // ID( ID )
KeyModifiers fsModifiers, // Alt、Ctrl、Shift、Windows
Keys vk //
);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool UnregisterHotKey(
IntPtr hWnd, //
int id // ID
);
// ( , )
[Flags()]
public enum KeyModifiers
{
None = 0,
Alt = 1,
Ctrl = 2,
Shift = 4,
WindowsKey = 8
}
}
}
"Public static extern bool RegisterHotKey()"라 는 함 수 는 단축 키 를 등록 하 는 데 사 용 됩 니 다.이 함 수 는 user32.dll 동적 링크 라 이브 러 리 를 참조 해 야 사용 할 수 있 으 며,user32.dll 은 비 위탁 관리 코드 이기 때문에 네 임 스페이스 방식 으로 직접 참조 할 수 없 기 때문에'Dll Import'로 도입 해 야 사용 할 수 있 습 니 다.그래서 함수 앞 에'[DllImport(user32.dll,SetLastError=true)]'라 는 문장 을 붙 여야 합 니 다.'public static extern bool UnregisterHotKey()"이 함 수 는 단축 키 를 로그아웃 하 는 데 사용 되 며,마찬가지 로 DllImport 로 user32.dll 을 인용 해 야 사용 할 수 있 습 니 다."public enum KeyModifiers{}은 보조 키 의 디지털 코드 를 문자 로 직접 표시 하여 사용 하기 편리 하도록 매 거 진 을 정의 합 니 다.이렇게 호출 할 때 우 리 는 모든 보조 키 의 코드 를 기억 하지 않 고 이름 만 직접 선택 하면 된다.2)창 FormA 의 경우 HotKey 클래스 가 FormA 의 Activate 이벤트 에 사용 되 는 단축 키 를 소개 하 며,이 경우 Shift+S,Ctrl+Z,Alt+D 등 세 개의 단축 키 를 등록 합 니 다.이곳 의 Id 번 호 는 임의로 설정 할 수 있 지만 중복 되 지 않도록 해 야 합 니 다.
private void Form_Activated(object sender, EventArgs e)
{
// Shift+S,Id 100。HotKey.KeyModifiers.Shift 4 。
HotKey.RegisterHotKey(Handle, 100, HotKey.KeyModifiers.Shift, Keys.S);
// Ctrl+B,Id 101。HotKey.KeyModifiers.Ctrl 2 。
HotKey.RegisterHotKey(Handle, 101, HotKey.KeyModifiers.Ctrl, Keys.B);
// Alt+D,Id 102。HotKey.KeyModifiers.Alt 1 。
HotKey.RegisterHotKey(Handle, 102, HotKey.KeyModifiers.Alt, Keys.D);
}
FormA 의 Leave 이벤트 에서 단축 키 를 로그아웃 합 니 다.
private void FrmSale_Leave(object sender, EventArgs e)
{
// Id 100
HotKey.UnregisterHotKey(Handle, 100);
// Id 101
HotKey.UnregisterHotKey(Handle, 101);
// Id 102
HotKey.UnregisterHotKey(Handle, 102);
}
FromA 의 WndProc 함수
///
/// Windows
/// WndProc ,
///
///
protected override void WndProc(ref Message m)
{
const int WM_HOTKEY = 0x0312;
//
switch (m.Msg)
{
case WM_HOTKEY:
switch (m.WParam.ToInt32())
{
case 100: // Shift+S
//
break;
case 101: // Ctrl+B
//
break;
case 102: // Alt+D
//
break;
}
break;
}
base.WndProc(ref m);
}
를 다시 불 러 와 코드 를 완성 하면 창 에 Shift+S,Ctrl+B,Alt+D 세 개의 단축 키 중 임의의 그룹 을 누 르 면 프로그램 이 응답 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[하루 셸 명령] 파일 작업 시리즈 - ln말 그대로 링크 를 만 드 는 것 입 니 다.어떻게 이해 하지?이 기능 은 Mac OS 의 별명 이나 Windows 의 단축 키 와 유사 하 며 삭제 가 파일 자체 에 영향 을 주지 않 습 니 다. (파일 이름 의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.