본문 바로가기

MFC

[MFC] 키보드 입력, 키보드 이벤트 keybd_event()

keybd_event() 함수는 Windows API에서 키보드 이벤트를 시뮬레이션하기 위해 사용되는 함수이다. 이 함수는 특정 키의 눌림 또는 놓임 동작을 시뮬레이션하여 운영 체제에 전달한다.

 

형태:

 

void keybd_event(

BYTE bVk,

BYTE bScan,

DWORD dwFlags,

ULONG_PTR dwExtraInfo

);

 

1. bVk: 가상 키 코드(Virtual-Key Code). 이 값은 눌리거나 놓일 키를 지정.

 

2. bScan: 하드웨어 스캔 코드. 일반적으로 0을 사용하며, 특정 키의 하드웨어 스캔 코드를 지정하려면 해당 값을 사용할 수 있다.

 

3. dwFlags: 동작 플래그를 지정. 이 플래그는 키 이벤트의 유형을 나타낸다.

 

KEYEVENTF_EXTENDEDKEY: 확장 키를 누를 때 사용합니다.

KEYEVENTF_KEYUP: 키를 놓을 때 사용합니다. 이 플래그가 없으면 키를 누르는 이벤트로 처리된다.

 

4. dwExtraInfo: 추가적인 정보를 제공하는 값으로, 일반적으로 사용되지 않는다.

 

 

다음은 keybd_event()를 사용하여 'A' 키를 누르고 놓는 예제:

 

 

#include <windows.h>

 

int main()

{

// 'A' 키 누름

keybd_event(0x41, 0, 0, 0);

 

// 'A' 키 놓음

keybd_event(0x41, 0, KEYEVENTF_KEYUP, 0);

 

return 0;

}

위 예제에서는 'A' 키를 눌렀다가 놓는 동작을 시뮬레이션. 0x41'A' 키의 가상 키 코드. 첫 번째 호출에서는 KEYEVENTF_KEYUP 플래그를 사용하지 않으므로 'A' 키가 눌리는 동작을 시뮬레이션하고, 두 번째 호출에서는 KEYEVENTF_KEYUP 플래그를 사용하여 'A' 키가 놓이는 동작을 한다.

 

다양한 가상 키 코드에 대해서는

 

https://robbercat.tistory.com/4

에 설명돼있다.