다음을 통해 공유


KeyboardProc 호출 함수

Description

SetWindowsHookExA SetWindowsHookExW함수와 함께 사용되는 애플리케이션 정의 또는 라이브러리 정의 콜백 함수입니다./

시스템은 애플리케이션이 GetMessage 또는 PeekMessageA/PeekMessageW함수를 호출하고 처리할 키보드 메시지(WM_KEYUP 또는 WM_KEYDOWN 있을 때마다 이 함수를 호출합니다.

HOOKPROC 형식은 이 콜백 함수에 대한 포인터를 정의합니다. KeyboardProc 은 애플리케이션 정의 또는 라이브러리 정의 함수 이름의 자리 표시자입니다.

LRESULT CALLBACK KeyboardProc(
  _In_ int    code,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

매개 변수

코드 [in]

형식: int

후크 프로시저가 메시지를 처리하는 방법을 결정하는 데 사용하는 코드입니다.

코드가 0보다 작은 경우 후크 프로시저는 추가 처리 없이 CallNextHookEx 함수에 메시지를 전달해야 하며 CallNextHookEx에서 반환된 값을 반환해야 합니다.

이 매개 변수는 다음 값 중 하나일 수 있습니다.

의미
HC_ACTION 0 wParamlParam 매개 변수에는 키 입력 메시지에 대한 정보가 포함됩니다.
HC_NOREMOVE 3 wParamlParam 매개 변수에는 키 입력 메시지에 대한 정보가 포함되며 키 입력 메시지가 메시지 큐에서 제거되지 않았습니다. ( peekMessage 함수라는 애플리케이션으로 , PM_NOREMOVE 플래그를 지정합니다.

wParam [in]

형식: WPARAM

키 입력 메시지를 생성한 키의 가상 키 코드 입니다.

lParam [in]

형식: LPARAM

반복 수, 검사 코드, 확장 키 플래그, 컨텍스트 코드, 이전 키 상태 플래그 및 전환 상태 플래그입니다. lParam 매개 변수에 대한 자세한 내용은 키 입력 메시지 플래그를 참조하세요. 다음 표에서는 이 값의 비트를 설명합니다.

비트 Description
0-15 반복 횟수입니다. 값은 사용자가 키를 누를 때 키 입력이 반복되는 횟수입니다.
16-23 스캔 코드입니다. 이 값은 OEM에 따라 달라집니다.
24 키가 함수 키 또는 숫자 키패드의 키와 같은 확장 키인지 여부를 나타냅니다. 키가 확장 키인 경우 값은 1입니다. 그렇지 않으면 0입니다.
25-28 예약되어 있습니다.
29 컨텍스트 코드입니다. ALT 키가 다운된 경우 값은 1입니다. 그렇지 않으면 0입니다.
30 이전 키 상태입니다. 메시지가 전송되기 전에 키가 다운된 경우 값은 1입니다. 키가 켜져 있으면 0입니다.
31 전환 상태입니다. 키를 누를 경우 값은 0이고 해제되는 경우 1입니다.

반환

형식: LRESULT

코드가 0보다 작은 경우 후크 프로시저는 CallNextHookEx에서 반환된 값을 반환해야 합니다.

코드가 0보다 크거나 같고 후크 프로시저가 메시지를 처리하지 않은 경우 CallNextHookEx를 호출하고 반환하는 값을 반환하는 것이 좋습니다. 그렇지 않으면 WH_KEYBOARD 후크를 설치한 다른 애플리케이션은 후크 알림을 받지 못하며 결과적으로 잘못 동작할 수 있습니다.

후크 프로시저가 메시지를 처리한 경우 시스템이 메시지를 후크 체인 또는 대상 창 프로시저의 나머지 부분에 전달하지 못하도록 0이 아닌 값을 반환할 수 있습니다.

설명

애플리케이션은 SetWindowsHookExA/SetWindowsHookExW 함수에 대한 호출에서 후크 프로시저에 대한 포인터와 WH_KEYBOARD 후크 형식을 지정하여 후크 프로시저를 설치합니다.

이 후크는 설치한 스레드의 컨텍스트에서 호출될 수 있습니다. 호출은 후크를 설치한 스레드에 메시지를 전송하여 이루어집니다. 따라서 후크를 설치한 스레드에는 메시지 루프가 있어야 합니다.

추가 정보