У меня есть некоторые проблемы с WH_KEYBOARD_LL
ловушкой:
Причина, по которой я использую глобальную LL-ловушку, не важна, мне просто нужно это для моего приложения (я пробовал другие типы хуков)но они не работали для меня).
Функция ловушки находится в DLL, DLL загружается при запуске приложения, и ловушка устанавливается также при запуске из основного потока.Это работает отлично.Проблема возникает, когда мне нужно отключить хук и снова активировать его.Если я делаю это из основного потока приложения, оно работает нормально, но мне нужно сделать это из таймера, и здесь все идет не так.Я использую таймер, чтобы проверить, является ли мое приложение окном переднего плана (активным окном), если так, то ловушка активирована, а если нет, ловушка деактивирована.Возвращаемое значение SetWindowsHookEx
при вызове из таймера всегда в порядке (не ноль), что в соответствии с MSDN означает, что ловушка была успешно установлена, но моя функция ловушки никогда не вызывается.
Вот как я устанавливаюмой хук:
SetWindowsHookEx(WH_KEYBOARD_LL, keyboardHookProcedure,
GetModuleHandle(curModule.ModuleName), 0);
Кто-нибудь когда-либо испытывал это ??
Мое единственное предположение, что моя функция хука находится в dll, а обратный вызов таймера от другой dll, имеет ли это что-нибудьделать с моей проблемой ??