2010-10-27 45 views
1

我讀了一些文章和MSDN和博客,但有一些問題爲什麼我們必須放在一個單獨的DLL全局鉤子程序

爲什麼我們必須把從安裝鉤子程序的應用程序單獨的DLL中的全局鉤子程序

和全局鉤子和鍵盤區不同(我沒有單獨的dll編寫鍵盤)有什麼不同? 密鑰愛好者如何攔截所有應用程序的鍵盤消息而無需單獨的dll?

finaly

dll中的全局鉤子代碼是什麼?

請給的細節寫全局鉤子一些步驟

回答

3

基本上有兩種方式如何在全球範圍內捕捉按鍵(鍵盤記錄器可以使用其中的任何):

  1. 使用全局鍵盤鉤子。 如上所述,此方法需要位於獨立DLL文件中的HookProcedure。這是如何捕捉擊鍵的正確方式,因爲您的功能僅在每次按鍵時被調用。

    本文可能是有用的:http://www.codeproject.com/KB/DLL/keyboardhook.aspx

  2. 調用WinAPI的功能GetKeyboardState。此方法不需要單獨的DLL文件,但有一個很大的缺點。該函數僅返回鍵盤的實際狀態。有必要在無限循環中調用它(可能在單獨的線程中,但不一定),並有一點睡眠時間來控制所有擊鍵。

    這導致CPU使用率增加。我不建議你使用這種技術。另外一個具有良好啓發式的殺毒軟件會將這些代碼視爲鍵盤記錄器。

沒有DLL的鍵盤記錄可能會使用第二種方法或在運行中生成DLL。

相關問題