Реферат: Хуки и DLL
****************************************************************/
static LRESULT CALLBACK msghook(int nCode, WPARAM wParam, LPARAM lParam)
{
// If the value of nCode is < 0, just pass it on and return 0
// this is required by the specification of hook handlers
// Если значение nCode < 0, просто передаем его дальше и возвращаем 0
// этого требует спецификация обработчиков хуков
if(nCode < 0)
{ /* передаем дальше */
CallNextHookEx(hook, nCode,
wParam, lParam);
return 0;
} /* передаем дальше */
// Прочитайте документацию, чтобы выяснить смысл параметров WPARAM и LPARAM
// Для хука WH_MESSAGE, LPARAM определяется как указатель на структуру MSG,
// таким образом следующий код делает эту структуру доступной
LPMSG msg = (LPMSG)lParam;
// Если это сообщение о перемещении мыши, либо в клиентской (client), либо
// в не клиентской (non-client) области, мы хотим уведомить родителя о его
// возникновении. Заметим, что вместо SendMessage используется PostMessage
if(msg->message == WM_MOUSEMOVE ||
msg->message == WM_NCMOUSEMOVE)
PostMessage(hWndServer,
UWM_MOUSEMOVE,
0, 0);
// Передаем сообщение следующему хуку
return CallNextHookEx(hook, nCode,
wParam, lParam);
} // msghook