C# 키보드이벤트
.NET/WinAPI 2014. 1. 19. 12:50
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 |