32-разрядная клавиатура Hook неожиданно работает в 64-разрядных приложениях, но висит Outlook - PullRequest
2 голосов
/ 12 апреля 2011

Много читал об этом, и картина становится еще грязнее.У меня есть 32-разрядное приложение, которое устанавливает KeyboardHook, чтобы дождаться глобальной горячей клавиши и проснуться.Запуская его в Win 7 x64 edition, я замечаю, что при нажатии горячей клавиши зависает Outlook x64 edition.

Итак, я провел небольшое исследование, и похоже, что 32-разрядные перехватчики клавиатуры даже не должны работать в 64-разрядной версии.Программы.Время для дополнительного тестирования ...

Они отлично работают в 64-битном блокноте, WordPad и заметках.Я проверил, что это 64-битные приложения, так как в Диспетчере задач рядом с ними нет «* 32».Не вешает приложение и делает то, что должно.Но подождите ... 32-битный хук DLL не может быть загружен в 64-битное приложение, верно?

Взгляд на Process Explorer показывает, что хук DLL даже не загружен в процесс блокнота!(Если я запускаю 32-битный notepad.exe из каталога WOW64, я вижу, что dll загружен в процесс, поэтому я знаю, что правильно использую инструменты).

Таким образом, проблема с зависанием Outlook можетможет быть и не связано, но почему хук вообще работает в 64-битном блокноте?

1 Ответ

0 голосов
/ 20 августа 2011

У меня есть 32-разрядное приложение, которое устанавливает KeyboardHook для ожидания глобальной горячей клавиши и пробуждения.

Если это ваша конечная цель, то это проще и меньше влияетв системе просто использовать RegisterHotKey .

...