다음을 통해 공유


GetKeyboardState 함수(winuser.h)

256개 가상 키의 상태를 지정된 버퍼에 복사합니다.

구문

BOOL GetKeyboardState(
  [out] PBYTE lpKeyState
);

매개 변수

[out] lpKeyState

형식: PBYTE

각 가상 키에 대한 상태 데이터를 수신하는 256 바이트 배열입니다.

반환 값

형식: BOOL

함수가 성공하면 반환 값이 0이 아닙니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

애플리케이션은 이 함수를 호출하여 모든 가상 키의 현재 상태 검색할 수 있습니다. 스레드가 메시지 큐에서 키보드 메시지를 제거하면 상태 변경됩니다. 키보드 메시지가 스레드의 메시지 큐에 게시되므로 상태 변경되지 않으며 키보드 메시지가 다른 스레드의 메시지 큐에 게시되거나 검색될 때 변경되지 않습니다. (예외: AttachThreadInput 을 통해 연결된 스레드는 동일한 키보드 상태를 공유합니다.)

함수가 반환되면 lpKeyState 매개 변수가 가리키는 배열의 각 멤버에는 가상 키에 대한 상태 데이터가 포함됩니다. 상위 비트가 1이면 키가 다운됩니다. 그렇지 않으면 작동합니다. 키가 토글 키(예: CAPS LOCK)인 경우 키가 토글되면 하위 순서 비트가 1이고 키가 토글 해제된 경우 0입니다. 하위 순서 비트는 토글하지 않는 키에 의미가 없습니다. 토글 키를 켜면 토글 키를 전환했다고 합니다. 키를 토글할 때 키보드에 있는 토글 키의 표시등(있는 경우)이 켜지고 키가 토글 해제될 때 꺼집니다.

개별 키에 대한 상태 정보를 검색하려면 GetKeyState 함수를 사용합니다. 메시지 큐에서 해당 키보드 메시지를 검색했는지 여부에 관계없이 개별 키의 현재 상태를 검색하려면 GetAsyncKeyState 함수를 사용합니다.

애플리케이션은 VK_SHIFT, VK_CONTROLVK_MENU 가상 키 코드 상수를 lpKeyState가 가리키는 배열 에 대한 인덱스로 사용할 수 있습니다. 이렇게 하면 왼쪽과 오른쪽을 구분하지 않고 Shift, Ctrl 또는 Alt 키의 상태 수 있습니다. 애플리케이션은 다음 가상 키 코드 상수를 인덱스로 사용하여 해당 키의 왼쪽 인스턴스와 오른쪽 인스턴스를 구분할 수도 있습니다.

VK_LSHIFT
VK_RSHIFT
VK_LCONTROL
VK_RCONTROL
VK_LMENU
VK_RMENU
 

이러한 왼쪽 및 오른쪽 구분 상수는 GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyStateMapVirtualKey 함수를 통해서만 애플리케이션에서 사용할 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll
API 세트 ext-ms-win-ntuser-rawinput-l1-1-0(Windows 10 버전 10.0.14393에 도입됨)

추가 정보