Цитата Сообщение от Alex_K Посмотреть сообщение
С хуками довольно много мороки, они должны быть в DLL.
Относительно хуков есть два замечания:

1. Чаще всего хуки вообще не нужны - достаточно обрабатывать *KEYDOWN и *KEYUP.

2. Хуки не должны быть в DLL.

Только что специально проверил - хук, установленный обычной программой, перехватывает все нажатия клавиш в Windows Vista пока программа запущена, вне зависимости от текущего активного приложения и положения фокуса ввода.

Строчка установки хука в программе выглядит так:
Код:
HHOOK g_hHookKbdLL = NULL; // hook handle

if( !g_hHookKbdLL ) 
{ 
     g_hHookKbdLL = SetWindowsHookEx(
                                       WH_KEYBOARD_LL,
                                       MyTaskKeyHookLL, 
                                       ghInstance, 
                                       0 
                                    );
}