我已經設法使輸入鉤子工作,但現在我有點丟了把它們放到一個庫中。在DLL中調用LowLevelKeyboardProcedure
我有一個在IDE中定義的INPUTHOOK_EXPORTS
的簡單頭文件,因此dll導出(Visual Studio)。
#pragma once
#ifdef INPUTHOOK_EXPORTS
#define INPUTHOOK_API __declspec(dllexport)
#else
#define INPUTHOOK_API __declspec(dllimport)
#endif
INPUTHOOK_API void InstallInputHook();
INPUTHOOK_API void RemoveInputHook();
,當然還有:
的事情是,當我嘗試編譯這個庫,我得到兩個無法解析的外部,一個用於SetWindowsHookEx
和UnhookWindowsHookEx
分別。爲什麼這兩個功能都不可用,而其他都是而沒有任何問題?據我所知,我確實擁有包含權利。
謝謝
全局鉤子('... _LL')應該在沒有它的情況下運行,因爲回調是直接調用的。這應該不是問題,因爲在將代碼移到dll之前,這個代碼很有用。 – 2010-08-18 14:28:00
LowLevelKeyboardProc是WH_KEYBOARD_LL掛鉤的回調函數。你需要使用message loop.http://msdn.microsoft.com/en-us/library/ms644985%28VS.85%29.aspx但是你的問題已經改變了:現在你問一些關於未解決的外部信息。爲什麼? – 2010-08-25 15:27:39
'WH_KEYBOARD_LL'不需要循環,這是我實際嘗試過的部分,它運行良好,沒有任何問題。由於某些原因,msnd表示不同,但請查看主文章下方的註釋。 |問題在於將代碼移動到庫中,由於某些原因,鉤子函數不起作用並彈出未解析的外部代碼。 – 2010-08-27 07:00:28