본문 바로가기

C#

C# WinAPI - KeyEvent

[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);


// ex)
const byte AltKey = 18;
const int KEYUP = 0x0002;    
int Info=0;
keybd_event(AltKey, 0, 0, ref Info);   // ALT key 다운
keybd_event(AltKey, 0, KEYUP, ref Info);  // ALT key 업


// F4
// keydown 0x100
// keyup 0x101
SendMessage(whandle, 0x100, 0x73, IntPtr.Zero);
SendMessage(whandle, 0x101, 0x73, IntPtr.Zero);


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키 눌렀다 뗌

 

상수 Description
VK_LBUTTON 0x01 마우스 왼쪽 단추
VK_RBUTTON 0x02 마우스 오른쪽 단추
VK_CANCEL 0x03 제어 중단 처리
VK_MBUTTON 0x04 마우스 가운데 단추 (3 단추 마우스)
VK_XBUTTON1 0x05 X1 마우스 단추
VK_XBUTTON2 0x06 X2 마우스 단추
- 0x07 정의되지 않음
VK_BACK 0x08 백스페이스 키
VK_TAB 0x09 Tab 키
- 0x0A-0B 예약됨
VK_CLEAR 0x0C 키 지우기
VK_RETURN 0x0D 키 입력
- 0x0E-0F에서 정의되지 않음
VK_SHIFT 0x10 SHIFT 키
VK_CONTROL 0x11 CTRL 키
VK_MENU 0x12 Alt 키
VK_PAUSE 0x13 키 일시 중지
VK_CAPITAL 0x14 Caps lock 키
VK_KANA 0x15 IME 가나 모드
VK_HANGUEL 0x15 IME 한글 모드 (호환성을 위해 유지 됩니다. 사용 VK_HANGUL )
VK_HANGUL 0x15 IME 한글 모드
VK_IME_ON 0x16 IME 설정
VK_JUNJA 0x17 IME 전자 모드
VK_FINAL 0x18 IME 최종 모드
VK_HANJA 0x19 IME 한자 모드
VK_KANJI 0x19 IME 간지 모드
VK_IME_OFF 0x1A IME 해제
VK_ESCAPE 0x1B ESC 키
VK_CONVERT 0x1C IME 변환
VK_NONCONVERT 0x1D IME 변환 안 함
VK_ACCEPT 0x1E IME 수락
VK_MODECHANGE 0x1F IME 모드 변경 요청
VK_SPACE 0x20 스페이스바
VK_PRIOR 0x21 PAGE UP 키
VK_NEXT 0x22 PAGE DOWN 키
VK_END 0x23 끝 키
VK_HOME 0x24 HOME 키
VK_LEFT 0x25 왼쪽 화살표 키
VK_UP 0x26 위쪽 화살표 키
VK_RIGHT 0x27 오른쪽 화살표 키
VK_DOWN 0x28 아래쪽 화살표 키
VK_SELECT 0x29 키 선택
VK_PRINT 0x2A 인쇄 키
VK_EXECUTE 0x2B 키 실행
VK_SNAPSHOT 0x2C 화면 키 인쇄
VK_INSERT 0x2D INS 키
VK_DELETE 0x2E DEL 키
VK_HELP 0x2F 도움말 키
  0x30 0 키
  0x31 키 1개
  0x32 2 키
  0x33 3 키
  0x34 4 키
  0x35 5 키
  0x36 6 키
  0x37 7 키
  0x38 8 키
  0x39 9 키
- 0x3A-40 정의되지 않음
  0x41
  0x42 B 키
  0x43 C 키
  0x44 D 키
  0x45 E 키
  0x46 F 키
  0x47 G 키
  0x48 H 키
  0x49 I 키
  0x4A J 키
  0x4B K 키
  0x4C L 키
  0x4D M 키
  0x4E N 키
  0x4F O 키
  0x50 P 키
  0x51 Q 키
  0x52 R 키
  0x53 S 키
  0x54 T 키
  0x55 U 키
  0x56 V 키
  0x57 W 키
  0x58 X 키
  0x59 Y 키
  0x5A Z 키
VK_LWIN 0x5B 왼쪽 Windows 키 (자연 키보드)
VK_RWIN 0x5C 오른쪽 Windows 키 (자연 키보드)
VK_APPS 0x5D 응용 프로그램 키 (자연 키보드)
- 0x5E 예약됨
VK_SLEEP 0x5F 컴퓨터 절전 키
VK_NUMPAD0 0x60 숫자 키패드 0 키
VK_NUMPAD1 0x61 숫자 키패드 1 키
VK_NUMPAD2 0x62 숫자 키패드 2 키
VK_NUMPAD3 0x63 숫자 키패드 3 키
VK_NUMPAD4 0x64 숫자 키패드 4 키
VK_NUMPAD5 0x65 숫자 키패드 5 키
VK_NUMPAD6 0x66 숫자 키패드 6 키
VK_NUMPAD7 0x67 숫자 키패드 7 키
VK_NUMPAD8 0x68 숫자 키패드 8 키
VK_NUMPAD9 0x69 숫자 키패드 9 키
VK_MULTIPLY 0x6A 곱하기 키
VK_ADD 0x6B 키 추가
VK_SEPARATOR 0x6C 구분 기호 키
VK_SUBTRACT 0x6D 키 빼기
VK_DECIMAL 0x6E 10진수 키
VK_DIVIDE 0x6F 키 나누기
VK_F1 0x70 F1 키
VK_F2 0x71 F2 키
VK_F3 0x72 F3 키
VK_F4 0x73 F4 키
VK_F5 0x74 F5 키
VK_F6 0x75 F6 키
VK_F7 0x76 F7 키
VK_F8 0x77 F8 키
VK_F9 0x78 F9 키
VK_F10 0x79 F10 키
VK_F11 0x7A F11 키
VK_F12 0x7B F12 키
VK_F13 0x7C F13 키
VK_F14 0x7D F14 키
VK_F15 0x7e F15 키
VK_F16 0x7F F16 키
VK_F17 0x80 F17 키
VK_F18 0x81 F18 키
VK_F19 0x82 F19 키
VK_F20 0x83 F20 키
VK_F21 0x84 F21 키
VK_F22 0x85 F22 키
VK_F23 0x86 F23 키
VK_F24 0x87 F24 키
- 0x88-8F 할당되지 않음
VK_NUMLOCK 0x90 NUM LOCK 키
VK_SCROLL 0x91 SCROLL LOCK 키
  0x92-96 OEM 관련
- 0x97-9F 할당되지 않음
VK_LSHIFT 0xA0 왼쪽 Shift 키
VK_RSHIFT 0xA1 오른쪽 Shift 키
VK_LCONTROL 0xA2 왼쪽 Ctrl 키
VK_RCONTROL 0xA3 오른쪽 Ctrl 키
VK_LMENU 0xA4 왼쪽 메뉴 키
VK_RMENU 0xA5 오른쪽 메뉴 키
VK_BROWSER_BACK 0xA6 브라우저 뒤로 키
VK_BROWSER_FORWARD 0xA7 브라우저 앞으로 키
VK_BROWSER_REFRESH 0xA8 브라우저 새로 고침 키
VK_BROWSER_STOP 0xA9 브라우저 중지 키
VK_BROWSER_SEARCH 0xAA 브라우저 검색 키
VK_BROWSER_FAVORITES 0xAB 브라우저 즐겨찾기 키
VK_BROWSER_HOME 0xAC 브라우저 시작 및 홈 키
VK_VOLUME_MUTE 0xAD 볼륨 음소거 키
VK_VOLUME_DOWN 0xAE 볼륨 작게 키
VK_VOLUME_UP 0xAF 볼륨 위로 키
VK_MEDIA_NEXT_TRACK 0xB0 다음 트랙 키
VK_MEDIA_PREV_TRACK 0xB1 이전 추적 키
VK_MEDIA_STOP 0xB2 미디어 키 중지
VK_MEDIA_PLAY_PAUSE 0xB3 미디어 키 재생/일시 중지
VK_LAUNCH_MAIL 0xB4 메일 키 시작
VK_LAUNCH_MEDIA_SELECT 0xB5 미디어 키 선택
VK_LAUNCH_APP1 0xB6 응용 프로그램 1 키 시작
VK_LAUNCH_APP2 0xB7 응용 프로그램 2 시작 키
- 0xB8-B9 예약됨
VK_OEM_1 0xBA 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다. 미국 표준 키보드의 경우 ';: ' 키
VK_OEM_PLUS 0xBB 모든 국가/지역의 경우 ' + ' 키
VK_OEM_COMMA 0xBC 모든 국가/지역의 경우 ', ' 키
VK_OEM_MINUS 0xBD 모든 국가/지역의 경우 '-' 키
VK_OEM_PERIOD 0xBE 모든 국가/지역의 경우 '. ' 키
VK_OEM_2 0xBF 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다. 미국 표준 키보드의 경우 '/? '입니다. 키
VK_OEM_3 0xC0 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다. 미국 표준 키보드의 경우 ' ` ~ ' 키
- 0xC1-D7 예약됨
- 0xD8-DA 할당되지 않음
VK_OEM_4 0xDB 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다. 미국 표준 키보드의 경우 ' [ {' 키
VK_OEM_5 0xDC 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다. 미국 표준 키보드의 경우 ' \ | ' 키
VK_OEM_6 0xDD 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다. 미국 표준 키보드의 경우 ' ] } ' 키
VK_OEM_7 0xDE 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다. 미국 표준 키보드의 경우 ' 작은따옴표/큰따옴표 ' 키
VK_OEM_8 0xDF 기타 문자에 사용 됩니다. 이는 키보드에 따라 다를 수 있습니다.
- 0xE0 예약됨
  0xE1 OEM 관련
VK_OEM_102 0xE2 <>미국 표준 키보드의 키 또는 미국 102 키가 \\| 아닌 키보드의 키
  0xE3-E4 OEM 관련
VK_PROCESSKEY 0xE5 IME 프로세스 키
  0xE6 OEM 관련
VK_PACKET 0xE7 유니코드 문자를 키 입력인 것처럼 전달할 때 사용합니다. VK_PACKET키는 키보드 이외의 입력 방법에 사용 되는 32 비트 가상 키 값의 하위 워드입니다. 자세한 내용은 KEYBDINPUT ,, SendInput WM_KEYDOWN 및의 주석을 참조 하세요. WM_KEYUP
- 0xE8 할당되지 않음
  0xE9-F5 OEM 관련
VK_ATTN 0xF6 Attn 키
VK_CRSEL 0xF7 CrSel 키
VK_EXSEL 0xF8 ExSel 키
VK_EREOF 0xF9 EOF 키 지우기
VK_PLAY 0xFA 재생 키
VK_ZOOM 0xFB 확대/축소 키
VK_NONAME 0xFC 예약됨
VK_PA1 0xFD PA1 키
     
VK_OEM_CLEAR 0xFE 키 지우기