Я могу правильно настроить крючок Windows, но я запутался в строке в MSDN, в которой говорится: «Вызов функции CallNextHookEx для перехода к следующей процедуре перехвата является необязательным, но настоятельно рекомендуется в противном случае другие приложения, у которых установлены крючки, не будут получать уведомления о крюке и могут вести себя некорректно в результате. Вы должны позвонить CallNextHookEx, если вам абсолютно не нужно препятствовать тому, чтобы уведомление было замечено другими приложениями ».Как правильно использовать SetWindowsHookEx & CallNextHookEx
Я хочу быть хорошим гражданином программирования и называть следующий крюк. Но моя подключаемая процедура выглядит следующим образом:
LRESULT CALLBACK CBTProc(int code, WPARAM wp, LPARAM lp)
{
if (code != HCBT_CREATEWND)
{
// What do I do here? It's not the event I requested so how do I pass it on?
return 0;
}
// It's the code we want (create window)
CallNextHookEx(...);
...
}
Итак, что происходит в подключаемую процедуру, если код не один, я заинтересован в? Как я могу назвать следующий крюк?
Редактировать: Основная проблема заключается в том, что HHOOK возвращается из SetWindowsHookEx, и его необходимо передать функции CallNextHookEx.
Update: кажется параметр Крючок игнорируется на платформах NT:
http://msdn.microsoft.com/en-us/library/ms644974.aspx
http://www.klenotic.com/pl/null_hhook/
Это не работает, потому что CallNextHookEx принимает параметр HHOOK (возвращается из SetWindowsHookEx). – 2008-10-18 13:59:38