관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

keybd_event 본문

API 관련/Win32 API 함수

keybd_event

님투 2007. 11. 8. 23:01
반응형

keybd_event

키스트로크(keystroke)를 합성합니다.합성된 키스트로크(keystroke)로부터, WM_KEYUP (이)나 WM_KEYDOWN 메세지를 생성합니다.

Windows NT/2000/XP: 이 함수는 SendInput 함수에 교체되었습니다.

VOID keybd_event(
    BYTE  bVk,            // 가상 키코드
    BYTE  bScan,          // 하드웨어 스캔 코드
    DWORD dwFlags,        // 동작 지정 플래그
    ULONG_PTR dwExtraInfo // 추가 정보
);

USER32.DLL

인수

bVk

가상 키코드(을)를 지정합니다. 1 이상 254 이하의 값이 아니면 안됩니다.

bScan

이 파라미터는 사용되지 않습니다.

dwFlags

함수의 동작을 지정합니다. 0 또는 다음의 값의 조합으로 지정합니다.

의미
0x0001 (KEYEVENTF_EXTENDEDKEY)

스캔 코드에 프리픽스바이트 0xE0 (224) (을)를 부가합니다.

0x0002 (KEYEVENTF_KEYUP)

키를 떼어 놓는 조작으로 합니다.지정하지 않으면, 키를 누르는 조작이 됩니다.

dwExtraInfo

키스트로크(keystroke)에 관련했다 32 비트의 추가 정보를 지정합니다.

반환값

반환값은 없습니다.

해설

어플리케이션은, 스크린의 snapshot를 취득해 클립보드에 보존하기 위해서, [PrintScreen] 키의 눌러 인하를 시뮬레이트 할 수 있습니다.이것에는, bVk 파라미터에 0x2C (VK_SNAPSHOT) (을)를 지정하고, keybd_event 함수를 호출합니다.

Windows NT/2000/XP: keybd_event 함수는 [Num Lock], [Caps Lock], [Scroll Lock] 키를 바꿀 수 있습니다.

Windows 95/98/Me: keybd_event 함수는 [Caps Lock], [Scroll Lock] 키를 바꿀 수 있습니다만, [Num Lock] 키를 바꿀 수 없습니다.

(주) VC++6.0부속의MSDN에는 다음과 같은 기술이 있었다(게다가 일본어판·영문판으로 내용이 다르다).현재는, 이것에 관한 기술은 없다.

이 함수는 OEM 의존의 하드웨어 스캔 코드를 Windows 에 건네줄 수 있습니다만, 어플리케이션은 스캔 코드를 이용해야 하는 것이 아닙니다.

어플리케이션은, 스크린의 snapshot를 얻기 위해서, [PrintScreen] 키의 눌러 인하를 시뮬레이트 할 수 있습니다.이것을 실현하려면 , bVk 파라미터에 0x2C (VK_SNAPSHOT) (을)를, bScan 파라미터에 0 (화면 전체의 snapshot를 취할 때) 또는 1 (액티브 윈도우의 snapshot를 취할 때)(을)를 지정하고, keybd_event 함수를 호출합니다.

스크린의 snapshot를 취해 클립보드에 카피하는 경우는,Windows의 버젼에 따라서 방법이 다릅니다.우선 GetVersionEx 함수로 버젼 정보를 취득해, 메이저 버젼이4이하인가5이상인가로 다른 코드를 실행할 필요가 있습니다.

  • 메이저 버젼 번호가5이상의 경우

    스크린 전체의 snapshot를 얻으려면 , bVk 파라미터에 0x2C (VK_SNAPSHOT) (을)를, bScan 파라미터에 0 (을)를 지정합니다.

    액티브 윈도우의 snapshot를 얻으려면 , bVk 파라미터에 0x2C (VK_SNAPSHOT) (을)를, bScan 파라미터에 1 (을)를 지정합니다.

  • 메이저 버젼 번호가4이하의 경우

    스크린 전체의 snapshot를 얻으려면 , bVk 파라미터에 0x2C (VK_SNAPSHOT) (을)를, bScan 파라미터에 1 (을)를 지정합니다.

    액티브 윈도우의 snapshot를 얻으려면 , [Alt] 키 (VK_MENU) (을)를 누르면서 [PrintScreen] 키 (VK_SNAPSHOT) (을)를 누르는 동작을에뮤레이트 합니다.즉,

    keybd_event(VK_MENU, 0, 0, 0);
    keybd_event(VK_SNAPSHOT, 0, 0, 0);
    keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0);
    keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

반응형

'API 관련 > Win32 API 함수' 카테고리의 다른 글

LoadCursorFromFile(A)  (0) 2007.11.08
LoadCursor(A)  (0) 2007.11.08
InitCommonControlsEx  (0) 2007.11.08
InitCommonControls  (0) 2007.11.08
ImageList_GetIcon  (0) 2007.11.08
Comments