2011-04-11 24 views
2

已經閱讀了很多關於這個問題的內容,並且圖片變得更加混亂。我有一個32位應用程序安裝了一個KeyboardHook來等待全局熱鍵並喚醒。在Win 7 x64版本上運行它時,我注意到當按下熱鍵時它會掛起Outlook x64版本。32位鍵盤掛鉤出乎意料地在64位應用程序中工作,但懸掛了Outlook

所以我做了一些研究,它看起來像32位鍵盤掛鉤甚至不應該在64位應用程序中工作。更多測試的時間...

他們的熱鍵在64位記事本,寫字板和便籤中工作正常。我確認這些是64位應用程序,因爲他們在任務管理器中沒有「* 32」。不掛上應用程序,它做它應該的。但是等等...一個32位的hook dll不能被加載到一個64位的應用程序中,對吧?

看看Process Explorer顯示鉤子DLL甚至沒有加載到記事本進程中! (如果我從WOW64目錄運行32位notepad.exe,我可以看到加載到進程中的dll,所以我知道我正在使用這些工具)。

因此,Outlook掛起的問題可能會或可能不會相關,但爲什麼掛鉤甚至可以在64位記事本中工作?

+2

有*兩個*鍵盤鉤類型。低級別的不需要DLL注入。 – 2011-04-12 00:32:28

+0

感謝您的提示。我應該看看低水平的鉤。目前我正在使用SetWindowsHookEx()和WH_KEYBOARD。現在我正在探索RegisterHotKey(),它似乎也不需要DLL。 – Nicholas 2011-04-12 03:43:33

+0

看着並測試WH_KEYBOARD_LL,似乎它需要注入dll。我不能掛鉤註冊和大量的參考在線說,該DLL是必需的。想法? – Nicholas 2011-04-12 19:26:05

回答

0

我有一個32位應用程序,它安裝一個KeyboardHook來等待全局熱鍵並喚醒。

如果這是您的最終目標,那麼只需使用RegisterHotKey就可以使系統更簡單,影響更小。