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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

淺談C++KeyboardProc|LowLevelKeyboardProc函數(shù)使用

2019-11-14 10:23:10
字體:
供稿:網(wǎng)友

(注意:本章沒有用到DLL,而是直接鉤住當前程序??!)

首先列舉 一下WindowsHOOK基本的函數(shù)(主要關(guān)于鍵盤…):

HHOOK WINAPI SetWindowsHookEx(

  _In_ int       idHook,

 _In_ HOOKPROC  lpfn,

 _In_ HINSTANCE hMod,

  _In_ DWord    dwThreadId

);

LRESULT WINAPI CallNextHookEx(
  _In_opt_ HHOOK  hhk,
  _In_     int    nCode,
  _In_     WPARAM wParam,
  _In_     LPARAM lParam
);

BOOL WINAPI UnhookWindowsHookEx(

  _In_ HHOOKhhk

);

LRESULT CALLBACK KeyboardProc(

  _In_ int    code,

  _In_ WPARAMwParam,

  _In_ LPARAMlParam

);

LRESULT CALLBACK LowLevelKeyboardProc(
  _In_ int    nCode,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);
注意 上面的 KeyboardProc 和 LowLevelKeyboardProc 函數(shù),前者是普通的鉤子函數(shù),而后者是一個低級的鉤子函數(shù),這兩個函數(shù)的參數(shù)不同,所以要獲取的值也不同??!
 
摘自MSDN:
KeyboardProc的函數(shù)參數(shù)(wparam和lparam)使用

wParam [in]

Type: WPARAM

The virtual-key code of the key thatgenerated the keystroke message.

lParam [in]

Type: LPARAM

The repeat count, scan code, extended-key flag, contextcode, previous key-state flag, and transition-state flag. For more informationabout thelParam parameter, seeKeystroke Message Flags. The following table describes the bits of this value.

由此可看出 ,wparam主要是鍵盤的虛擬鍵代碼,lparam主要是:

The lParam parameter of a keystroke message containsadditional information about the keystroke that generated the message. Thisinformation includes therepeat count, the scan code, the extended-key flag, thecontext code, the previous key-state flag, and the transition-state flag.The following illustration shows the locations of these flags and values in thelParam parameter.

怎么說呢,這個參數(shù)其實主要看16-23位,剛好達到8位,也就是一個掃描碼!

那么像這樣的參數(shù)給我們有什么用啊?其實如果你 用過函數(shù) GetKeyNameText

就知道了,他的第一個參數(shù)就是lparam,也就是KeyboardProc 第三個參數(shù)!!是不是很巧?就是用他來獲取到按下的鍵盤名,所以這個函數(shù) 可以和KeyboardProc 一起使用!

 

下面就介紹 LowLevelboardProc 函數(shù),參數(shù)和KeyboardProc 一樣,但是參數(shù)所起的作用差距很大,可謂 失之毫厘,差之千里~~

當 SetWindowsHookEx() 參數(shù)idHOOK 為WH_KEYBORAD_LL時,這個函數(shù)的參數(shù)中的wparam 為 鍵盤消息,如WM_KEYDOMN… 那么lparam 就是一個 LPKBDLLHOOKSTRUCT結(jié)構(gòu)體了!看這個結(jié)構(gòu)體的名字就知道這是一個用于 低級鍵盤鉤子的,“LL”->”LowLevel“,呵呵~這個結(jié)構(gòu)體中 包括了 虛擬鍵代碼 和 掃描碼!

如上所述,我們大概就知道LowLevelboardProc 和 KeyboardProc的差別了,

但別忘了還有那個 SetWindowsHookEx()函數(shù),現(xiàn)在在回憶一下那個函數(shù)原型:

 HHOOK WINAPI SetWindowsHookEx(

  _In_ int       idHook,

  _In_ HOOKPROC  lpfn,

  _In_ HINSTANCE hMod,

  _In_ DWORD    dwThreadId

);

當IdHook為WH_KEYBOARD 時,lpfn為KeyboardProc(名字自定義),hMod為當前程序?qū)嵗浔?,MFC 有多種方法獲取,如:AfxGetInstanceHandle()  

最后一個 dwThreadId為0??!至于為什么,我現(xiàn)在還不是很清楚,希望有大神解答…

所以,當idHook為WH_KEYBOARD_LL時,dwThreadid 必須為當前模塊的線程ID!

看下圖來對比下:

 

據(jù)此,我把主要代碼給出來

HHOOK hHook2;

LRESULT CALLBACK KeyBoradProc(intcode,WPARAMwp,LPARAMlp)

{

         if (code<0)

         {

                   return CallNextHookEx(hHook2,code,wp,lp);

         }

         WCHAR szkeyValue[20]={ 0 };

         //wsprintf(szkeyValue, L"%c", wp);  //虛擬鍵代碼

            //獲取按鍵的名稱          

         GetKeyNameText(lp,szkeyValue, 50);

         AfxGetMainWnd()->SetDlgItemText(IDC_EDIT1,szkeyValue);

         return CallNextHookEx(hHook2,code,wp,lp);

}

       //安裝鍵盤鉤子

         hHook2 = SetWindowsHookEx(WH_KEYBOARD,KeyBoradProc,AfxGetInstanceHandle(),GetCurrentThreadId());      //注意這里的線程ID為當前程序的線程ID!

      

         //卸載鉤子

UnhookWindowsHookEx(hHook2);

下面是關(guān)于低級鍵盤鉤子的代碼;

         //低級的鍵盤鉤子

         hHook= ::SetWindowsHookEx(WH_KEYBOARD_LL,myLowLevelKeyboardProc,AfxGetInstanceHandle(),0);//注意這里TID為 0

 

         //卸載低級鉤子

UnhookWindowsHookEx(hHook)

 

//低級鉤子函數(shù)處理過程

LRESULT CALLBACK LowLevelKeyboardProc(_In_int   code,_In_WPARAMwParam,_In_LPARAMlParam)

{

                   if (code < 0)

                   {

                            returnCallNextHookEx(hHook,code,wParam,lParam);

                   }

 

                  // 低級鍵盤鉤子時,wparam參數(shù)為 WM鍵盤消息?。?!

 

                   //按下的

                   if (code ==HC_ACTION&&wParam==WM_KEYDOWN)

                   {

                            LPKBDLLHOOKSTRUCTpKbs = (LPKBDLLHOOKSTRUCT)lParam;

                            WCHARszlMsg[100] = { 0 };

                            wsprintf(szMsg,L"vkCode:%c-scanCode:%02X",pKbs->vkCode,pKbs->scanCode);

 

//ESC鍵掃描碼

                            if (pKbs->scanCode==0x01)

                            {                         

                                     returnTRUE;

                            }

                   }

                   return CallNextHookEx(hHook,code,wParam,lParam);

}

 

基本上注釋已經(jīng)說明了,那么本文也就到此結(jié)束了…


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
99久热在线精品视频| 视频一区二区三区免费观看| 国产不卡一二三区| 国产美女无遮挡网站| 狠狠综合久久av一区二区| segui88久久综合9999| 午夜在线视频一区二区区别| 日韩经典中文字幕在线观看| 欧美一级二级三级视频| 国产在线精品一区在线观看麻豆| 中文无码日韩欧| 日本精品一区二区三区在线观看视频| 999国产在线| 国产美女玉足交| 大片免费播放在线视频| 色爱综合网欧美| 色偷偷亚洲女人天堂观看欧| 亚洲国产日韩成人综合天堂| 欧美黑人猛交的在线视频| 高清亚洲高清| 国产精品欧美一级免费| 色激情天天射综合网| 日本国产一区二区| 日韩免费电影| 亚洲精品久久久久久久久久久久久久| 四虎永久在线观看免费网站网址| 亚洲丝袜av一区| av亚洲产国偷v产偷v自拍| av电影在线观看不卡| 韩国中文字幕hd久久精品| 久久久久亚洲精品中文字幕| 亚洲欧美乱综合| 欧美视频13p| 亚洲成人午夜在线| 国产国产一区| 一区二区三区四区不卡视频| 国产mv免费观看入口亚洲| 国产精品aaaa| 一起草最新网址| 欧美精品一区二区三区在线| 男女全黄做爰文章| 国产精品∨欧美精品v日韩精品| 99久久夜色精品国产亚洲96| 综合网五月天| 亚洲二区免费| 精品国产伦一区二区三区观看体验| 国产精品乱子乱xxxx| 少妇伦子伦精品无吗| 亚洲日本电影| 久久福利视频网| 性色av一区二区三区在线观看| 四虎永久国产精品| 亚洲神马久久| 亚洲精品国产精品国自产观看| 欧美二区在线视频| 国产欧美日韩精品丝袜高跟鞋| 国产欧美精品一区二区三区介绍| 欧美成人直播| 第一av在线| 狠狠干狠狠插| 99在线观看视频网站| 欧美中文一区二区| 你懂的视频在线一区二区| 亚洲国产精品二十页| 国产伦精品一区二区三区视频金莲| 校园激情久久| 99久久国产综合精品女小说| 国产美女视频一区二区| 午夜精品福利一区二区三区av| 亚洲成av人**亚洲成av**| 久久久久久激情| 天堂av一区二区三区在线播放| 91免费精品国自产拍在线不卡| 97久久网站| 深夜福利影院在线观看| 日韩三级成人av网| 欧美精品一区二区三区久久久竹菊| 香蕉久久一区二区不卡无毒影院| 91免费精品国自产拍在线不卡| 精品女同一区二区三区在线观看| 久久久香蕉视频| 538国产精品一区二区在线| 国产清纯白嫩初高生在线观看91| 成人片在线播放| 久久久精品久久| 色欲色香天天天综合网www| 天天躁日日躁狠狠躁欧美| 最近日本中文字幕| 精品播放一区二区| 91精品国模一区二区三区| 日韩三级av在线播放| 欧美电影在线观看完整版| 国产福利热线视频| 91网站在线观看视频| 成人性视频免费看| 欧美a在线观看| 日韩小视频在线| 国产一区二区视频在线看| 亚洲激情亚洲| 久久av一区二区三区漫画| 超碰中文字幕在线| 91高清国产| 久久国产成人午夜av影院| 青春娱乐分类视频精品2动漫| 精品一区二区三区蜜桃| 精品国产精品自拍| 91精品国产色综合久久不卡98口| av福利在线观看| 国产精品系列在线播放| 自拍偷拍电影| 免费无遮挡无码永久视频| 丰满人妻老熟妇伦人精品| 91精品国产高清91久久久久久| 中文字幕精品在线不卡| 亚洲网在线观看| 99re只有精品| 国产激情小视频在线| 欧美做爰猛烈大尺度视频| 大奶在线精品| 久久综合色之久久综合| 国产区亚洲区欧美区| 亚洲天堂精品视频| 精品一区二区三区免费观看| 欧美日韩在线播放| 国产精品黄色影片导航在线观看| 亚洲欧美在线免费观看| 欧美激情精品久久久六区热门| 黑人巨大精品欧美一区免费视频| 亚洲一区二区天堂| 日产精品一区| 农民人伦一区二区三区| 中文字幕一区二区三区不卡| 久久精品国产77777蜜臀| 欧美第一页浮力影院| 丰满少妇在线观看bd| 一区二区三区四区国产精品| 久久美女精品| av中文字幕在线看| 免播放器亚洲| 欧美在线观看视频一区二区三区| 久久久久久久久久亚洲| 日韩欧美国产精品一区二区三区| 日本视频中文字幕一区二区三区| 国产资源在线观看入口av| 亚洲第一免费网站| 中国 免费 av| 中文字幕亚洲一区| 国产在线高清精品| 亚洲欧美精品aaaaaa片| 4388成人网| 美女视频久久黄| 一本久久综合亚洲鲁鲁| 欧美激情视频在线免费观看 欧美视频免费一| 美女视频一区二区三区在线| 色偷偷福利视频| 嫩草影院入口一二三| 欧美伊久线香蕉线新在线| 国产99久久久久久免费看| 97视频在线免费观看| 国产手机免费视频| 中文字幕日韩在线| 高清无码一区二区在线观看吞精| 国产米奇在线777精品观看| 九色在线视频观看| 国产精品视频xxxx| 色综合天天综合网天天狠天天| 高清不卡亚洲| 国产精品婷婷午夜在线观看| av影片在线看| 国产国语老龄妇女a片| 精品呦交小u女在线| 欧美国产中文| 日本网站免费观看| 最近免费观看高清韩国日本大全| 欧美日韩成人一区二区| 黄色在线视频网址| 精品香蕉一区二区三区| 四虎成人精品永久免费av九九| 国产偷亚洲偷欧美偷精品| 国产精品久久久久久久久鸭| 香蕉视频网页版| xxxxx欧美| 国产免费xxx| 午夜欧美不卡精品aaaaa| 波多野结衣久久| 国产一区二区三区不卡在线观看| 精品日韩在线一区| 在线成人国产| 26uuu另类亚洲欧美日本一| 成年人在线免费观看视频网站| 久久综合九色九九| 一区二区三区四区视频在线观看| 一区二区 亚洲| 国产精品三级久久久久久电影| 成人久久久久| 久久久久久国产| 日韩人妻无码一区二区三区99| 日韩福利视频| 国产精品麻豆成人av电影艾秋| 欧美小视频在线| 91无套直看片红桃| 91免费电影网站| 成人欧美一区二区三区黑人孕妇| 亚洲天堂av一区二区三区| 精品免费二区三区三区高中清不卡| 97精品久久久午夜一区二区三区| 亚洲一区二区三区四区五区中文| 中文字幕在线视频区| 国产情侣在线视频| 欧美日韩亚洲一区二区三区| 青青草国产成人a∨下载安卓| 亚洲欧美一区二区三区久久| www.国产精品| 亚洲国产精品资源| 波多野结衣国产精品| 国产精品无圣光一区二区| 亚洲国产岛国毛片在线| 久久亚洲国产精品日日av夜夜| 91久久精品一区二区| 亚洲欧洲日韩精品| 酒色婷婷桃色成人免费av网| 成人欧美一区二区三区视频xxx| 黄色一级视频免费看| 亚洲第一福利在线观看| 日韩av中文在线| 亚洲二区在线| 麻豆tv入口在线看| caoporn视频在线| av网址在线观看免费| 国产99久久精品一区二区 夜夜躁日日躁| 中文字幕视频免费观看| 麻豆tv在线播放| 国产成人无码www免费视频播放| 思热99re视热频这里只精品| 久久人人妻人人人人妻性色av| 蜜芽tv福利在线视频| 国产一卡二卡三卡| 欧美xxxx老人做受| 久久精品亚洲一区二区| 青草在线视频在线观看| 欧美在线视频一区二区三区| jizzjizzjizz孕妇| 欧美专区日韩视频| 亚洲jizzjizz日本少妇| 91精品在线免费| 色婷婷精品大在线视频| 麻豆国产精品官网| 午夜欧美激情| 800av在线免费观看| 久久精品在线播放| 精品日韩毛片| 国内自拍视频网| 色av吧综合网| 男人天堂网av| 污视频在线看| caoporn91| 日本精品一区二区三区在线播放视频| 精品美女视频| 不卡一区二区在线观看| 欧美理论视频| 久久精品国产电影| 国产福利小视频在线| 五月天激情小说| 久久综合免费视频影院| 91精品免费久久久久久久久| 亚洲国产合集| 97伦理在线四区| 中文字幕av不卡在线| 亚洲在线欧美| 国产国语videosex另类| 四虎精品成人免费观看| 特级毛片www| www.色五月.com| 这里只有精品免费| 国产二级片在线| 亚洲va欧美va| jizzjizz日本护士视频| 国精产品一品二品国精品69xx| 欧美大片免费播放器| 在线免费观看日本一区| 国产精品一区二区三区免费观看| 国产精品无码白浆高潮| 日本视频www| mm1313亚洲国产精品无码试看| 丁香婷婷深情五月亚洲| 国产最顶级的黄色片在线免费观看| 欧洲亚洲精品视频| 久久五月激情| 偷拍日韩校园综合在线| av播放在线观看| 高清免费成人av| 亚洲成人久久一区| 成人午夜免费在线| 三级a三级三级三级a十八发禁止| 麻豆传媒在线完整视频| 国产福利在线| 韩国女主播成人在线| 中文字幕人妻互换av久久| 欧美做受xxxxxⅹ性视频| 欧美性巨大欧美| 蜜臀尤物一区二区三区直播| 国产一区二区三区视频在线观看| 人禽交欧美网站免费| 少妇精品视频在线观看| av大全在线免费看| 色妞欧美日韩在线| 一区二区在线观看视频在线| 黄色国产在线观看| 久久精品无码一区二区三区| 性高潮免费视频| 亚洲国产合集| 成人精品在线看| 色噜噜夜夜夜综合网| 亚洲免费福利视频| 欧美特大特白屁股xxxx| 精品视频一区二区| 成年网站免费视频黄| 日韩精品免费在线视频观看| 欧洲伦理片一区 二区 三区| 99久久夜色精品国产亚洲| av在线一区二区三区| 天堂在线观看av| 久久精品九九| 精品国产乱码久久久久久牛牛| 欧洲亚洲一区二区| 午夜精品一区二区三区在线视| 日本免费一区二区三区视频观看| 亚洲一区二区三区不卡国产欧美|