Нельзя ставить два хука одного типа из библиотеки, расположенной по одному и тому же пути. Да она вам и не даст.
Можно переместить библу в другое место (или переименовать) – тогда хуки можно ставить по новой из этого экземпляра библы.
Оч. рекомендуется перед завершением работы приложения делать RemoveHook. Экстремальные пофигисты могут этого не делать...
Немногочисленные комментарии – в коде

Очень хотелось бы узнать, работает ли эта бяка на NT-based. Запостите результат опытов, плз. Сохраните всё сначала... Если работает, статью напишу
