Re: Dr. Joseph M. Newcomer "Хуки и DLL"
От: YVR  
Дата: 12.09.03 10:03
Оценка:
Фрагмент кода из статьи:
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;
      } /* передаем дальше */

     // <...>

    // Передаем сообщение следующему хуку
    return CallNextHookEx(hook, nCode, 
                       wParam, lParam);
   } // msghook

В соответствии со документацией
для CallWndProc, CallWndRetProc, ForegroundIdleProc, GetMsgProc:

If nCode is less than zero, the hook procedure must return the value returned by CallNextHookEx.

для CBTProc, DebugProc, JournalPlaybackProc, JournalRecordProc, KeyboardProc, LowLevelKeyboardProc, LowLevelMouseProc, MessageProc, MouseProc, ShellProc, SysMsgProc:

If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.

Таким образом:
static LRESULT CALLBACK msghook(int nCode, WPARAM wParam, LPARAM lParam)
   {
    if(nCode < 0)
       return CallNextHookEx(hook, nCode,
                   wParam, lParam);

     // <...>
   } // msghook

Народ пользуется текстом статьи, не сверяясь с документацией.
Надо бы поправить
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.