GetKeyboardState() 함수는 Keyboard의 Key입력이나 Mouse Button의 누름상태를 반환합니다.
Private Declare Function GetKeyboardState Lib "user32" Alias "GetKeyboardState" (ByVal pbKeyState() As Byte) As Integer
▶VB.NET 선언
Private VirKey(256) As Byte
GetKeyboardState(VirKey)
VirKey(X)
▶VB.NET 호출
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern int GetKeyboardState(byte[] pbKeyState);
▶C# 선언
private byte[] VirKey = new byte[256];
GetKeyboardState(VirKey);
VirKey[X]
▶C# 호출
위 함수호출에서 배열부분에 X는 상태를 알고자 하는 Key의 배열번호를 의미합니다.
배열로 건네진 인수는 Byte배열인데 이 배열이 GetKeyboardState함수의 인수로 건네지게 되면 함수는 각 Byte에 해당하는 Key의 상태를 배열에 담게 되고 다시 이 배열의 값을 확인하게 되면 해당 key의 상태를 알 수 있게 되는 것입니다.(배열을 통하여 모든 Key의 상태를 한꺼번에 확인)
함수를 수행하고 난 후 배열의 값을 확인하면 0, 1, 128, 129의 값이 있을 수 있는데 1의 경우 해당 key가 한번 눌려졌음을 의미하며 이 상태에서 다시 key를 누르면 0으로 바뀌게 됩니다.(Toggle 상태)
128은 0상태일때 해당 Key가 계속눌려진채로 떨어지지 않은 상태를, 129는 1상태일때 해당 Key가 계속눌려진채로 떨어지지 않은 상태를 의미합니다.
Byte는 VB.NET일 경우 '&H01'부터, C#일 경우 '0x000'부터 시작하며 이 값들은 Key의 Windows(또는 기타 다른 운영체제) Ascii Code값과 일치하게 됩니다.
다음은 인수로 정해진 배열의 순서에 따라(Byte값) 자주쓰이는 Key의 종류를 나타낸 표입니다.(건너뛴 부분은 알수없거나 특수한 key의 용도로 사용되는데 자세한 부분은 Microsoft Homepage를 참조하시기 바랍니다.)
배열 | key |
1 | mouse 왼쪽 button |
2 | mouse 오른쪽 button |
4 | mouse 가운데 button |
7 | 미 정의 |
8 | 삭제 |
9 | tab |
10 | enter |
11 | 미 정의 |
12 | 미 정의 |
13 | shift |
14 | ctrl |
15 | alt |
16 | pause |
17 | caps lock |
18 | IME Kana |
20 | IME 한글 |
21 | 미 정의 |
22 | IME junja |
23 | IME final |
24 | IME hanja |
25 | IME kanji |
26 | 미 정의 |
27 | ESC |
28 | IME 전환 |
32 | space bar |
33 | page up |
34 | page down |
35 | end |
36 | home |
37 | left arrow |
38 | up arrow |
39 | right arrow |
40 | down arrow |
44 | print screen |
45 | ins |
46 | del |
48 | 0 |
49 | 1 |
50 | 2 |
51 | 3 |
52 | 4 |
53 | 5 |
54 | 6 |
55 | 7 |
56 | 8 |
57 | 9 |
58 | 미 정의 |
64 | 미 정의 |
65 | A |
66 | B |
67 | C |
68 | D |
69 | E |
70 | F |
71 | G |
72 | H |
73 | I |
74 | J |
75 | K |
76 | L |
77 | M |
78 | N |
79 | O |
80 | P |
81 | Q |
82 | R |
83 | S |
84 | T |
85 | U |
86 | V |
87 | W |
88 | X |
89 | Y |
90 | Z |
91 | keyboard의 mouse제어시 왼쪽 button |
92 | keyboard의 mouse제어시 오른쪽 button |
94 | 예약 |
96 | 숫자 pad의 0 |
97 | 숫자 pad의 1 |
98 | 숫자 pad의 2 |
99 | 숫자 pad의 3 |
100 | 숫자 pad의 4 |
101 | 숫자 pad의 5 |
102 | 숫자 pad의 6 |
103 | 숫자 pad의 7 |
104 | 숫자 pad의 8 |
105 | 숫자 pad의 9 |
106 | * |
107 | + |
109 | - |
111 | / |
112 | F1 |
113 | F2 |
114 | F3 |
115 | F4 |
116 | F5 |
117 | F6 |
118 | F7 |
119 | F8 |
120 | F9 |
121 | F10 |
122 | F11 |
123 | F12 |
144 | num lock |
145 | scroll lock |
160 | 왼쪽 shift |
161 | 오른쪽 shift |
162 | 왼쪽 control |
163 | 오른쪽 control |
184 | 예약 |
185 | 예약 |
186 | ;, : |
191 | /, ? |
192 | ~, ` |
193 | 예약 |
194 | 예약 |
195 | 예약 |
196 | 예약 |
197 | 예약 |
198 | 예약 |
199 | 예약 |
200 | 예약 |
201 | 예약 |
202 | 예약 |
203 | 예약 |
204 | 예약 |
205 | 예약 |
206 | 예약 |
207 | 예약 |
208 | 예약 |
209 | 예약 |
210 | 예약 |
211 | 예약 |
212 | 예약 |
213 | 예약 |
214 | 예약 |
215 | 예약 |
216 | 미 지정 |
217 | 미 지정 |
218 | 미 지정 |
224 | 예약 |
232 | 미 지정 |
'.NET > Windows API for .NET' 카테고리의 다른 글
GetKeyState - 해당 Key가 눌려졌는지에 대한 상태값 반환 (0) | 2019.08.12 |
---|---|
GetVersionEx - 운영체제 정보조회 (0) | 2019.08.12 |
Windows API (0) | 2019.08.12 |
GetFocus - 현재 Focus에 있는 Form또는 Control의 handle값 반환 (0) | 2019.08.12 |
GetActiveWindow - 현재 프로그램의 윈도우 핸들값 (0) | 2019.08.12 |