Функция GetMsgProc
Определяемая приложением или библиотека функция обратного вызова, используемая с функцией SetWindowsHookExA/SetWindowsHookExW. Система вызывает эту функцию всякий раз, когда функция GetMessage или PeekMessageA/PeekMessageW извлекла сообщение из очереди сообщений приложения. Перед возвращением полученного сообщения вызывающей системе передается сообщение в процедуру перехватчика.
Тип HOOKPROC определяет указатель на эту функцию обратного вызова. GetMsgProc — это заполнитель для имени определяемой приложением или библиотекой функции.
LRESULT CALLBACK GetMsgProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
Тип: int
Указывает, должна ли процедура перехватчика обрабатывать сообщение. Если код HC_ACTION, процедура перехватчика должна обработать сообщение. Если код меньше нуля, процедура перехватчика должна передать сообщение функции CallNextHookEx без дополнительной обработки и возвращать значение, возвращаемое CallNextHookEx.
Тип: WPARAM
Указывает, удалено ли сообщение из очереди. Этот параметр может принимать одно из указанных ниже значений.
Значение | Значение |
---|---|
PM_NOREMOVE 0x0000 | Сообщение не было удалено из очереди. (Приложение называется Функция PeekMessage , указывающая флаг PM_NOREMOVE .) |
PM_REMOVE 0x0001 | Сообщение было удалено из очереди. (Вызываемое приложениеGetMessage или вызывает функцию PeekMessage, указав флаг PM_REMOVE.) |
Тип: LPARAM
Указатель на структуру MSG , содержащую сведения о сообщении.
Если код меньше нуля, процедура перехватчика должна вернуть значение, возвращаемое CallNextHookEx.
Если код больше нуля или равен нулю, настоятельно рекомендуется вызывать CallNextHookEx и возвращать возвращаемое значение; в противном случае другие приложения, установленные WH_GETMESSAGE перехватчики, не получат уведомления об перехватчиках и могут вести себя неправильно в результате. Если процедура перехватчика не вызывает CallNextHookEx, возвращаемое значение должно быть равно нулю.
Процедура перехватчика GetMsgProc может проверять или изменять сообщение.
После того как процедура перехватчика возвращает управление системой, функция GetMessage или PeekMessageA/ PeekMessageW возвращает сообщение вместе с любыми изменениями в приложение, которое первоначально назвало его.
Приложение устанавливает эту процедуру перехватчика, указав тип перехватчика WH_GETMESSAGE и указатель на процедуру перехватчика в вызове функции SetWindowsHookExA/SetWindowsHookExW.