프로젝트 도중 키 이벤트를 강제로 발생시켜야 하는 상황이 생겼는데요;;
SendMessage로 WM_KEYDOWN을 보내놓고,  키가 입력되지 않는다고 화내고 있었습니다''
keybd_event라는 키보드 메세지를 생성해주는 훌륭한 Win32 API함수가 있더군요

keybd_event 함수의 원형은 다음과 같습니다.(USER32.DLL)
VOID keybd_event(      
    BYTE bVk,              // 가상 키코드
    BYTE bScan,          // 하드웨어 스캔 코드
    DWORD dwFlags,     // 동작 지정 Flag
    PTR dwExtraInfo     // 추가 정보
);
bVK
          가상키코드를 지정하는데 1~125 범위의 값이어야 합니다.

가상 키코드 확인하기

bScan
         
사용하지 않는 인자 입니다.

dwFlags
          함수의 동작을 지정하는데 0을 넣을 경우 KeyDown이고 0x0002를 넣을 경우 KeyUP 입니다.

dwExtraInfo
          키스트로크 관련 32비트의 추가 정보를 지정 한다고 합니다.

C#에서 사용시!
[DllImport("user32.dll)]
public static extern void Keybd_event(byte vk, byte scan, int flags, ref int extrainfo);


※ 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 업

Posted by 맨날맑음