internal enum HookType : uint {
WH_JOURNALRECORD = 0,
WH_JOURNALPLAYBACK = 1,
WH_KEYBOARD = 2,
WH_GETMESSAGE = 3,
WH_CALLWNDPROC = 4,
WH_CBT = 5,
WH_SYSMSGFILTER = 6,
WH_MOUSE = 7,
WH_HARDWARE = 8,
WH_DEBUG = 9,
WH_SHELL = 10,
WH_FOREGROUNDIDLE = 11,
WH_CALLWNDPROCRET = 12,
WH_KEYBOARD_LL = 13,
WH_MOUSE_LL = 14
}
Глобальные хуки не поддерживаются в .NET Framework
За исключением низкоуровневого хука WH_KEYBOARD_LL и низкоуровневого хука WH_MOUSE_LL, вы не можете реализовать глобальные хуки в Microsoft .NET Framework.
Чтобы установить глобальный хук, хук должен иметь собственный экспорт DLL, чтобы внедрить себя в другой процесс, для которого требуется допустимая, согласованная функция для вызова. Это поведение требует экспорта DLL.
.NET Framework не поддерживает экспорт DLL. Управляемый код не имеет понятия согласованного значения для указателя на функцию, поскольку эти указатели на функции являются прокси, которые создаются динамически.
Процедуры низкоуровневого перехвата вызываются на нити, в которой установлен перехватчик. Низкоуровневые хуки не требуют, чтобы процедура хуков была реализована в DLL.
Смотри также:
Snoop - Утилита WPF Spy
Или мой WPF => WF => Win32 LL_Keyboard Hook Proxy с жестами