?? 利用鍵盤鉤子在windows平臺(tái)下捕獲鍵盤動(dòng)作.txt
字號(hào):
作者:skyhorsebj
email: XUEY@CIDC.COM.CN
日期:2001-7-3 18:10:43
一。我們可以在應(yīng)用程序中毫不費(fèi)力的捕獲在本程序窗口上所進(jìn)行的鍵盤操作,但如果我們想要將此程序作成一個(gè)監(jiān)控程序,捕獲在Windows平臺(tái)下任意窗口上的鍵盤操作,就需要借助于全局鉤子來實(shí)現(xiàn)了。
二、系統(tǒng)鉤子和DLL
鉤子的本質(zhì)是一段用以處理系統(tǒng)消息的程序,通過系統(tǒng)調(diào)用,將其掛入系統(tǒng)。鉤子的種類有很多,每種鉤子可以截獲并處理相應(yīng)的消息,每當(dāng)特定的消息發(fā)出,在到達(dá)目的窗口之前,鉤子程序先行截獲該消息、得到對(duì)此消息的控制權(quán)。此時(shí)在鉤子函數(shù)中就可以對(duì)截獲的消息進(jìn)行加工處理,甚至可以強(qiáng)制結(jié)束消息的傳遞。
在本程序中我們需要捕獲在任意窗口上的鍵盤輸入,這就需要采用全局鉤子以便攔截整個(gè)系統(tǒng)的消息,而全局鉤子函數(shù)必須以DLL(動(dòng)態(tài)連接庫)為載體進(jìn)行封裝,VC6中有三種形式的MFC DLL可供選擇,即Regular statically linked to MFC DLL(標(biāo)準(zhǔn)靜態(tài)鏈接MFC DLL)、Regular using the shared MFC DLL(標(biāo)準(zhǔn)動(dòng)態(tài)鏈接MFC DLL)以及Extension MFC DLL(擴(kuò)展MFC DLL)。 在本程序中為方便起見采用了標(biāo)準(zhǔn)靜態(tài)連接MFC DLL。
三、鍵盤鉤子程序示例
本示例程序用到全局鉤子函數(shù),程序分兩部分:可執(zhí)行程序KeyHook和動(dòng)態(tài)連接庫LaunchDLL。
1、首先編制MFC擴(kuò)展動(dòng)態(tài)連接庫LaunchDLL.dll:
(1)選擇MFC AppWizard(DLL)創(chuàng)建項(xiàng)目LaunchDLL;在接下來的選項(xiàng)中選擇Regular statically linked to MFC DLL(標(biāo)準(zhǔn)靜態(tài)鏈接MFC DLL)。
(2)在LaunchDLL.h中添加宏定義和待導(dǎo)出函數(shù)的聲明:
#define DllExport __declspec(dllexport)
……
DllExport void WINAPI InstallLaunchEv();
……
class CLaunchDLLApp : public CWinApp
{
public:
CLaunchDLLApp();
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -