MessageProc 함수
SetWindowsHookExA SetWindowsHookExW함수와 함께 사용되는 애플리케이션 정의 또는 라이브러리 정의 콜백 함수입니다./ 시스템은 입력 이벤트가 대화 상자, 메시지 상자, 메뉴 또는 스크롤 막대에서 발생하지만 입력 이벤트에 의해 생성된 메시지가 처리되기 전에 이 함수를 호출합니다. 후크 프로시저는 특정 애플리케이션 또는 모든 애플리케이션에서 만든 대화 상자, 메시지 상자, 메뉴 또는 스크롤 막대에 대한 메시지를 모니터링할 수 있습니다.
HOOKPROC 형식은 이 콜백 함수에 대한 포인터를 정의합니다. MessageProc 은 애플리케이션 정의 또는 라이브러리 정의 함수 이름의 자리 표시자입니다.
LRESULT CALLBACK MessageProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
형식: int
메시지를 생성한 입력 이벤트의 형식입니다.
코드가 0보다 작은 경우 후크 프로시저는 추가 처리 없이 CallNextHookEx 함수에 메시지를 전달하고 CallNextHookEx에서 반환된 값을 반환해야 합니다.
이 매개 변수는 다음 값 중 하나일 수 있습니다.
값 | 의미 |
---|---|
MSGF_DDEMGR 0x8001 | DDEML(동적 데이터 교환 관리 라이브러리)이 동기 트랜잭션이 완료되기를 기다리는 동안 입력 이벤트가 발생했습니다. DDEML에 대한 자세한 내용은 동적 데이터 교환 관리 라이브러리를 참조하세요. |
MSGF_DIALOGBOX 0 | 입력 이벤트가 메시지 상자 또는 대화 상자에서 발생했습니다. |
MSGF_MENU 2 | 입력 이벤트가 메뉴에서 발생했습니다. |
MSGF_SCROLLBAR 5 | 입력 이벤트가 스크롤 막대에서 발생했습니다. |
형식: WPARAM
이 매개 변수는 사용되지 않습니다.
형식: LPARAM
MSG 구조체에 대한 포인터입니다.
형식: LRESULT
코드가 0보다 작은 경우 후크 프로시저는 CallNextHookEx에서 반환된 값을 반환해야 합니다.
코드가 0보다 크거나 같고 후크 프로시저가 메시지를 처리하지 않은 경우 CallNextHookEx를 호출하고 반환하는 값을 반환하는 것이 좋습니다. 그렇지 않으면 WH_MSGFILTER 후크를 설치한 다른 애플리케이션은 후크 알림을 받지 못하며 결과적으로 잘못 동작할 수 있습니다. 후크 프로시저가 메시지를 처리한 경우 시스템이 메시지를 후크 체인 또는 대상 창 프로시저의 나머지 부분에 전달하지 못하도록 0이 아닌 값을 반환할 수 있습니다.
애플리케이션은 SetWindowsHookExA/SetWindowsHookExW 함수에 대한 호출에서 후크 프로시저에 대한 포인터와 WH_MSGFILTER 후크 형식을 지정하여 후크 프로시저를 설치합니다.
DDEML을 사용하고 동기 트랜잭션을 수행하는 애플리케이션이 메시지를 디스패치하기 전에 처리해야 하는 경우 WH_MSGFILTER 후크를 사용해야 합니다.