현재 위치 - 중국 분류 정보 발표 플랫폼 - 비즈니스 서비스 정보 - C#에서 다른 소프트웨어의 키 누름을 감지하는 방법

C#에서 다른 소프트웨어의 키 누름을 감지하는 방법

다음 API 함수를 사용하여 감지해야 하는 키 입력 목록을 만들어야 합니다.

감지된 버튼을 타이머에 넣고 글로벌 버튼을 초당 30회 이상 감지합니다.

API 함수

///

/// GetAsyncKeyState 함수는 지정된 가상 키의 순간 상태 값을 반환하는 함수로 4가지 종류가 있습니다. of return Value:

///0---키를 누르지 않았고 키도 누르지 않았습니다(GetAsyncKeyState에 대한 마지막 호출 이후). p>< p> ///1---키를 떼는 순간 이전에 키가 눌려진 상태입니다;

/// -32768 (즉, 16진수 & H8000) --- 키를 눌렀지만 이전에 키를 누르지 않은 순간

///-32767 ( 즉, 16진수 &H8001) --- 계속해서 키를 누르고 있으며, 이전에 키를 누른 적이 있습니다.

///

[System.Runtime.InteropServices.DllImport("user32.dll")]

public static extern int GetAsyncKeyState ( int vKey );

///

GetCursorPos 함수는 마우스 위치를 반환합니다.

[System.Runtime.InteropServices.DllImport("user32.dll")] < /p>

public static extern int GetCursorPos (ref MOUSEPOINT lpPoint );

///

지정된 가상 코드의 키 상태를 반환합니다.

/// <〉 참조

///

public int 키 상태 가져오기 (int key) { return GetAsyncKeyState(key) }

///

마우스 위치 가져오기 및 반환

public MOUSEPOINT 마우스 위치 () {

MOUSEPOINT p = new MOUSEPOINT();

var k = 0;

k = GetCursorPos(ref p);

< p> return p;

}

///

API 함수를 사용하도록 사용자 정의된 화면에서의 마우스 위치를 나타내는 구조체

[StructLayout(LayoutKind.Sequential)]

public struct MOUSEPOINT{

public int X;

public int Y;

< p> 공개 MOUSEPOINT(int x, int y) {

this.X = x;

this.Y = y;

}

}

키 테이블

public enum EKey {

//마우스 b

없음 = 0,

왼쪽 마우스 버튼 = 1, LButton = 0x1,

오른쪽 마우스 버튼 = 2, RButton = 0x2,

취소 = 3, 취소 = 0x3,

< p> 마우스 가운데 버튼 = 4, MButton = 0x4,

측면 마우스 버튼 1 = 5, XButton1 = 0x5,

측면 마우스 버튼 2 = 6, XButton2 = 0x6,

p>< p> //기능 키

백스페이스 = 8, 뒤로 = 0x8,

탭 = 9, 탭 = 0x9,

LineFeed = 0xA, / /10,

지우기 = 0xC, //12,

Enter = 13, Enter = 0xD,

Exit = 27, Esc = 0x1B,< /p>

스페이스 = 32, 스페이스 = 0x20,

CapsLock = 0x14,

ScrollLock = 0x91,

NumLock = 0x90,

//키 조합

수정자 = -65536,

Shift = 16, Shift = 0x10,

Ctrl = 17, Ctrl = 0x11,

누르기 Alt = 18, Menu = 0x12, /*ALT 키 코드는 Menu입니다*/

Shift 누르기 = 65536, //0x10000,

Ctrl = 131072, //0x20000 누르기 ,

Alt = 262144, //0x40000,

왼쪽 Shift = 160, LShift = 0xA0,

오른쪽 Shift = 161, RShift = 0xA1,< /p>

왼쪽 Ctrl = 162, LControl = 0xA2,

오른쪽 Ctrl = 163, RControl = 0xA3,

왼쪽 Alt = 164, LMENU = 0xA4 ,

오른쪽 Alt = 165, RMENU = 0xA5,

왼쪽 Win = 91, LWIN = 0x5B,

오른쪽 Win = 92, RWIN = 0x5C,

< p> 디렉터리 = 93, 앱 = 0x5D,

//키보드 상단

세미콜론 = 186, 콜론 = 186, OEMSemicolon = 0xBA, OEM1 = 0xBA, / * : */

등호 = 187, 더하기 기호 = 187, OEMPlus = 0xBB, /* = + */

쉼표 = 188, 미만 기호 = 188, OEMComma = 0xBC, /* , < */

마이너스 기호 = 189, 밑줄 = 189, OEMinus = 0xBD, /* = + */

기간 = 190, 초과 기호 = 190, OEMPeriod = 0XBE, /* . > */

슬래시 = 191, 물음표 = 191, OEMQuestion = 0xBF, OEM2 = 0xBF, /* / */

액센트 = 192 물결표 = 192, OEMtilde = 0xC0, OEM3 = 0xC0, /* ` ~ */

왼쪽 대괄호 = 219, 왼쪽 중괄호 = 219, OEMOpenBreackets = 0xDB, OEM4 = 0xDB, /* [ { * /

백슬래시 = 220, 세로 막대 = 220, OEMPipe = 0xDC, OEM5 = 0xDC, /* \ | */

오른쪽 대괄호 = 221, 오른쪽 중괄호 = 221, OEMCloseBreackets = 0xDD, OEM6 = 0xDD, /* ] } */

따옴표 = 222, 큰따옴표 = 222, 작은따옴표 = 222, OEMQuptes = 0xDE, OEM7 = 0xDE, /* ' " */

꺾쇠 괄호 = 223, OEMBackslash = 0xDF, /* 102 키보드의 꺾쇠 괄호 또는 백슬래시 키*/

//키보드 중간

스크린샷 = 44 , PrintScreen = 0x2C,

Pause = 19, Pause = 0x13, Break = 0x13, /*break는 사용자 정의됨*/

Sleep = 95, Sleep = 0x5F,

삽입 = 0x2D,

홈 = 0x24,

종료 = 0x23,

삭제 = 0x2E,

PageDown = 0x22 ,

PageUp = 0x21,

LEFT = 37, LEFT = 0x25,

UP = 38, UP = 0x26,

오른쪽 키 = 39, 오른쪽 = 0x27,

아래쪽 키 = 40, 아래쪽 = 0x28,

//넘버보드

측면 0 = 96, Numpad0 = 0x60, NumpadInsert = 96, /*NumpadInsert가 사용자 정의됨*/

측면 1 = 97, Numpad1 = 0x61, NumpadDelete = 97, /*NumpadDelete가 사용자 정의됨*/

< p> 측면 2 = 98, Numpad2 = 0x62, NumpadDown = 98, /*NumpadDown은 사용자 정의됨*/

측면 3 = 99, Numpad3 = 0x63,

측면 4 = 100, Numpad4 = 0x64, NumpadLeft = 100 , /*NumpadLeft는 사용자 정의됨*/

측면 5 = 101, Numpad5 = 0x65,

측면 6 = 102, Numpad6 = 0x66, NumpadRight = 102, /*NumpadRight는 사용자 정의됨* /

측면 7 = 103, Numpad7 = 0x67,

측면 8 = 104, Numpad8 = 0x68, NumpadUp = 104, /*NumpadUp 사용자 정의*/

Numpad9 = 105, Numpad9 = 0x69, Numpad9 = 106, Mutiply = 0x6A, Numpad9 = 107, 더하기 = 0x6B,

옆 엔터 = 108, 구분 기호 = 0x6C,

옆 빼기 = 109, 빼기 = 0x6D,

측면 포인트= 110, 십진수 = 0x6E,

나누기 = 111, 나누기 = 0x6F,

//기능 키< /p>

F1 = 0x70,

F2 = 0x71 ,<

/p>

F3 = 0x72,

F4 = 0x73,

F5 = 0x74,

F6 = 0x75,

F7 = 0x76,

F8 = 0x77,

F9 = 120,

F10 = 0x79,

F11 = 0x7A, p>

F12 = 0x7B,

F13 = 0x7C,

F14 = 0x7D,

F15 = 0x7E,

F16 = 0x7F,

F17 = 0x80,

F18 = 0x81,

F19 = 130,

F20 = 0x83,< /p >

F21 = 0x84,

F22 = 0x85,

F23 = 0x86,

F24 = 0x87,

// 숫자와 문자

숫자 0 = 48, D0 = 0x30,

숫자 1 = 49, D1 = 0x31,

숫자 2 = 50, D2 = 0x32,

숫자 3 = 51, D3 = 0x33,

숫자 4 = 52, D4 = 0x34,

숫자 5 = 53, D5 = 0x35 ,

p>

숫자 6 = 54, D6 = 0x36,

숫자 7 = 55, D7 = 0x37,

숫자 8 = 56, D8 = 0x38,

숫자 9 = 57, D9 = 0x39,

A = 65, //0x41,

B = 66, //0x42,

C = 67, //0x43,

D = 68, //0x44,

E = 69, //0x45,

< p> F = 70, // 0x46,

G = 71, //0x47,

H = 72, //0x48,

I = 73 , //0x49,

J = 74, //0x4A,

K = 75, //0x4B,

L = 76, //0x4C,

M = 77, //0x4D,

N = 78, //0x4E,

O = 79, //0x4F,

< p> P = 80, //0x50,

Q = 81, //0x51,

R = 82, //0x52,

S = 83 , //0x53,

T = 84, //0x54,

U = 85, //0x55,

V = 86, //0x56,

W = 87, / /0x57,

X = 88, //0x58,

Y = 89, //0x59,

Z = 90, //0x5A,

//기타

Attn = 0xF6,

BrowserBack = 0xA6,

BrowserFavorites = 0xAB,

BrowserForward = 0xA7,

BrowserHome = 0xAC,

BrowserRefresh = 0xA8,

BrowserSearch = 170,

BrowserStop = 0xA9,

Crsel = 0xF7,

EraseEof = 0xF9,

Exsel = 0xF8,

FinalMode = 0x18,

HanguelMode = 0x15 ,

HangulMode = 0x15,

HanjaMode = 0x19,

도움말 = 47, 도움말 = 0x2F,

IMEAccept = 30,< /p>

IMEAcept = 30,

IMEConvert = 0x1C,

IMEModeChange = 0x1F,

IMENonconvert = 0x1D,

JunjaMode = 0x17,

KanaMode = 0x15,

KanjiMode = 0x19,

KeyCode = 0xFFFF,

LaunchApplication1 = 0xB6,

LaunchApplication2 = 0xB7,

LaunchMail = 180,

볼륨 낮추기 = 0xAE,

볼륨 비활성화됨 = 0xAD,

볼륨 증폭 = 0xAF,

선택 = 41, 선택 = 0x29,

인쇄 = 42, 인쇄 = 0x2A,

실행 = 0x2B,

p>

MediaSelect = 0xB5,

MediaNextTrack = 0xB0,

MediaPlayPause = 0xB3,

MediaPreviousTrack = 0xB1,

> MediaStop = 0xB2,

재생 = 250, 재생 = 0xFA,

OemBackslash = 0xE2,

OemClear = 0xFE,

Pa1 = 0xFD,

패킷 = 0xE7,

이전 = 0x21,

ProcessKey = 0xE5,

NoName = 0xFC,

확대/축소 = 0xFB,

}