CBTProc 콜백 함수

SetWindowsHookExA SetWindowsHookExW함수와 함께 사용되는 애플리케이션 정의 또는 라이브러리 정의 콜백 함수입니다./ 시스템은 창을 활성화, 생성, 파괴, 최소화, 최대화, 이동 또는 크기 조정하기 전에 이 함수를 호출합니다. 시스템 명령을 완료하기 전에 시스템 메시지 큐에서 마우스 또는 키보드 이벤트를 제거하기 전에 키보드 포커스를 설정하기 전에 또는 시스템 메시지 큐와 동기화하기 전에 CBT(컴퓨터 기반 학습) 애플리케이션은 이 후크 프로시저를 사용하여 시스템에서 유용한 알림을 받습니다.

구문

LRESULT CALLBACK CBTProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

매개 변수

  • nCode [in]
    형식: int

    후크 프로시저가 메시지를 처리하는 방법을 결정하는 데 사용하는 코드입니다. nCode가 0보다 작은 경우 후크 프로시저는 추가 처리 없이 CallNextHookEx 함수에 메시지를 전달해야 하며 CallNextHookEx에서 반환된 값을 반환해야 합니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

    의미
    HCBT_ACTIVATE 5

    시스템이 창을 활성화하려고 합니다.

    HCBT_CLICKSKIPPED 6

    시스템에서 시스템 메시지 큐에서 마우스 메시지를 제거했습니다. 이 후크 코드를 받으면 CBT 애플리케이션은 마우스 메시지에 대한 응답으로 WH_JOURNALPLAYBACK 후크 프로시저를 설치해야 합니다.

    HCBT_CREATEWND 3

    창이 만들어질 예정입니다. 시스템은 WM_CREATE 또는 WM_NCCREATE 메시지를 창으로 보내기 전에 후크 프로시저 를 호출합니다. 후크 프로시저가 0이 아닌 값을 반환하면 시스템은 창을 삭제합니다. CreateWindow 함수는 NULL을 반환하지만 WM_DESTROY 메시지는 창으로 전송되지 않습니다. 후크 프로시저가 0을 반환하면 창이 정상적으로 만들어집니다.

    HCBT_CREATEWND 알림이 있을 때 창이 만들어졌지만 최종 크기와 위치가 결정되지 않았을 수 있으며 부모 창이 설정되지 않았을 수 있습니다. 아직 WM_NCCREATE 또는 WM_CREATE 메시지를 받지 못했지만 새로 만든 창으로 메시지를 보낼 있습니다. CBT_CREATEWND 구조체hwndInsertAfter 멤버를 수정하여 새로 만든 창의 z 순서로 위치를 변경할 수도 있습니다.

    HCBT_DESTROYWND 4

    창이 제거될 예정입니다.

    HCBT_KEYSKIPPED 7

    시스템에서 시스템 메시지 큐에서 키보드 메시지를 제거했습니다. 이 후크 코드를 받으면 CBT 애플리케이션은 키보드 메시지에 대한 응답으로 WH_JOURNALPLAYBACK 후크 프로시저를 설치해야 합니다.

    HCBT_MINMAX 1

    창을 최소화하거나 최대화하려고 합니다.

    HCBT_MOVESIZE 0

    창을 이동하거나 크기를 조정하려고 합니다.

    HCBT_QS 2

    시스템이 시스템 메시지 큐에서 WM_QUEUESYNC 메시지를 검색했습니다.

    HCBT_SETFOCUS 9

    창이 키보드 포커스를 받습니다.

    HCBT_SYSCOMMAND 8

    시스템 명령이 실행될 예정입니다. 이를 통해 CBT 애플리케이션은 핫 키를 통해 작업 전환을 방지할 수 있습니다.

     
    • wParam [in]
      형식: WPARAM

      nCode 매개 변수에 따라 다릅니다. 자세한 내용은 다음 설명 섹션을 참조하세요.

    • lParam [in]
      형식: LPARAM

      nCode 매개 변수에 따라 다릅니다. 자세한 내용은 다음 설명 섹션을 참조하세요.

    반환 값

    형식:****

    형식: LRESULT

    후크 프로시저에서 반환되는 값은 시스템에서 이러한 작업 중 하나를 허용하거나 방지하는지 여부를 결정합니다. 다음 CBT 후크 코드에 해당하는 작업의 경우 반환 값은 작업을 허용하려면 0이어야 합니다. 그렇지 않으면 1이어야 합니다.

    • HCBT_ACTIVATE
    • HCBT_CREATEWND
    • HCBT_DESTROYWND
    • HCBT_MINMAX
    • HCBT_MOVESIZE
    • HCBT_SETFOCUS
    • HCBT_SYSCOMMAND

    다음 CBT 후크 코드에 해당하는 작업의 경우 반환 값은 무시됩니다.

    • HCBT_CLICKSKIPPED
    • HCBT_KEYSKIPPED
    • HCBT_QS

    설명

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

    후크 프로시저는 이전 후크 코드 목록에 설명된 경우를 제외하고 WH_JOURNALPLAYBACK 후크 프로시저를 설치해서는 안 됩니다.

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

    다음 표에서는 각 HCBT_ 후크 코드에 대한 wParamlParam 매개 변수에 대해 설명합니다.

    wParam lParam
    HCBT_ACTIVATE 활성화할 창에 대한 핸들을 지정합니다. 활성 창에 대한 핸들을 포함하는 CBTACTIVATESTRUCT 구조체에 대한 긴 포인터를 지정하고 마우스 클릭으로 인해 활성화가 변경되는지 여부를 지정합니다.
    HCBT_CLICKSKIPPED 시스템 메시지 큐에서 제거된 마우스 메시지를 지정합니다. 적중 테스트 코드와 마우스 메시지가 의도된 창에 대한 핸들을 포함하는 MOUSEHOOKSTRUCT 구조체에 대한 긴 포인터를 지정합니다.

    HCBT_CLICKSKIPPED 값은 WH_MOUSE 후크가 설치된 경우에만 CBTProc 후크 프로시저로 전송됩니다. 적중 테스트 코드 목록은 WM_NCHITTEST 참조하세요.

    HCBT_CREATEWND 새 창에 대한 핸들을 지정합니다. 창에 대한 초기화 매개 변수를 포함하는 CBT_CREATEWND 구조체에 대한 긴 포인터를 지정합니다. 매개 변수에는 창의 좌표와 차원이 포함됩니다. 이러한 매개 변수를 변경하여 CBTProc 후크 프로시저는 창의 초기 크기와 위치를 설정할 수 있습니다.
    HCBT_DESTROYWND 제거될 창에 대한 핸들을 지정합니다. 정의되지 않았으며 0으로 설정해야 합니다.
    HCBT_KEYSKIPPED 가상 키 코드를 지정합니다. 반복 수, 검사 코드, 키 전환 코드, 이전 키 상태 및 컨텍스트 코드를 지정합니다. HCBT_KEYSKIPPED 값은 WH_KEYBOARD 후크가 설치된 경우에만 CBTProc 후크 프로시저로 전송됩니다. 자세한 내용은 WM_KEYUP 또는 WM_KEYDOWN 참조 하세요.
    HCBT_MINMAX 최소화되거나 최대화되는 창에 대한 핸들을 지정합니다. 낮은 순서의 단어에서 연산을 지정하는 표시 창 값(SW_)을 지정합니다. 표시 창 값 목록은 ShowWindow를 참조하세요. 상위 단어는 정의되지 않습니다.
    HCBT_MOVESIZE 이동하거나 크기를 지정할 창에 대한 핸들을 지정합니다. 창의 좌표를 포함하는 RECT 구조체에 대한 긴 포인터를 지정합니다. CBTProc 후크 프로시저는 구조체의 값을 변경하여 창의 최종 좌표를 설정할 수 있습니다.
    HCBT_QS 정의되지 않았으며 0이어야 합니다. 정의되지 않았으며 0이어야 합니다.
    HCBT_SETFOCUS 키보드 포커스를 얻는 창에 대한 핸들을 지정합니다. 키보드 포커스가 손실된 창에 대한 핸들을 지정합니다.
    HCBT_SYSCOMMAND 시스템 명령을 지정하는 시스템 명령 값(SC_)을 지정합니다. 시스템 명령 값에 대한 자세한 내용은 WM_SYSCOMMAND. WM_SYSCOMMAND 메시지의 lParam 값과 동일한 데이터를 포함합니다. 마우스로 시스템 메뉴 명령을 선택하면 낮은 순서의 단어에 커서의 x 좌표가 화면 좌표로 포함되고 상위 단어에는 y 좌표가 포함됩니다. 그렇지 않으면 매개 변수가 사용되지 않습니다.

     

    자세한 내용은 Windows 이벤트를 참조하세요.

    요구 사항

    지원되는 최소 클라이언트

    Windows 2000 Professional[데스크톱 앱만]

    지원되는 최소 서버

    Windows 2000 Server[데스크톱 앱만]

    헤더

    Winuser.h(Windows.h 포함)

    추가 정보

    CallNextHookEx

    CreateWindowA/CreateWindowW

    SetWindowsHookExA/SetWindowsHookExW

    WM_SYSCOMMAND 메시지

    후크