C# 키보드이벤트

keybd_event / MapVirtualKey

 

활성중인 영역에 키입력 이벤트를 발생 시킨다.

 

 

 

선언:

[DllImport("user32.dll")]
public static extern void keybd_event(uint vk, uint scan, uint flags, uint extraInfo);

[DllImport("user32.dll")]
private static extern uint MapVirtualKey(int wCode, int wMapType);

 

keybd_event는 키입력 이벤트를 발생시키는 주체이고,

MapVirtualKey는 가상 키값과 스캔 코드값 어느쪽이든 변환이 필요할때 사용하는데

주로 스캔 코드값을 뽑아내는 인버터 개념이다.

 

keybd_event만으로 모든 키입력 이벤트가 가능하지만

받아들이는 응용프로그램에서 스캔 코드값을 원한다면 스캔 코드값으로 변환해서 이벤트를 줘야 한다.

 

keybd_event( 가상 키, 스캔 코드, DOWN(0) or UP(2), 키보드타입);

1,2번째 인수에 가상키와 스캔 코드값중 원하는 값을 주고

3번째 인수에 눌러짐은 0x00, 떼어짐은 0x02

4번째 인수에 일반키보드는 0을 넘겨준다.

 

MapVirtualKey( 변환 할 키, 변환 동작 설정);

2번째 인수 변환 동작: 주로 0만 사용.

0 가상키를 스캔 코드로 변환

1 스캔 코드를 가상키로 변환 (좌우측 키 구분 무시)

2 가상키를 문자열로 변환

3 스캔 코드를 가상키로 변환

 

 

호출:

keybd_event((byte)Keys.ControlKey, 0, 0x00, 0);
keybd_event((byte)Keys.ControlKey, 0, 0x02, 0);
//콘트롤키 눌렀다 뗌

keybd_event(0, MapVirtualKey((int)Keys.D1, 0), 0x00, 0);
keybd_event(0, MapVirtualKey((int)Keys.D1, 0), 0x02, 0);
//숫자1키 눌렀다 뗌

 

 

 

 

'.NET > WinAPI' 카테고리의 다른 글

C# 마우스이벤트  (0) 2014.01.18
C# 윈도우 위치,크기 정보얻기 GetWindowPlacement  (0) 2014.01.06
C# 핫키 설정 RegisterHotKey  (0) 2013.12.28
C# 윈도우핸들 얻기 FindWindow  (0) 2013.12.20
C#에 Windows API 사용하기  (0) 2013.12.19