色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術WinCE系統鼠標鍵盤鉤子使用方法簡介

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-05 11:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在實際應用中,有時程序需要在特定的鼠標、按鍵事件后,執行一些操作,比如:

1、點擊觸摸屏時觸發蜂鳴器。

2、在休眠狀態點擊觸摸屏后,讓程序結束休眠狀態。

3、設定全局的按鍵功能,如一鍵截圖或一鍵關機。

4、過濾一些鼠標或鍵盤操作等等。

這時,可以使用鍵盤鼠標鉤子來實現這些功能。

鉤子是WINDOWS/WINCE系統獨有的消息處理機制。通過系統調用,將消息處理程序段掛入系統,獲得消息處理優先控制權,在消息達到目的窗口前進行處理。鉤子函數可以通過判斷決定是否加工處理(改變)消息,或不做處理繼續傳遞各消息,或強制結束消息傳遞。

鉤子有很多種,WINCE系統已精簡到只有4種鉤子。同時鉤子又可做局部鉤子或全局鉤子,局部鉤子僅在指定進程內生效,而全局鉤子在系統范圍內都生效。一般的全局鉤子需要掛載到dll中使用,本文介紹的鼠標鉤子和鍵盤鉤子較特殊,不需要掛載到dll中即可全局生效。

鉤子的運行邏輯如下圖,每種鉤子可以掛入任意多個鉤子函數,以鏈表方式存儲。系統優先訪問鏈表首位的鉤子,然后依次傳遞消息給后面的鉤子處理。后掛入的鉤子位于鏈表的前端。

使用方法

添加鉤子分3步。

1、編寫鉤子函數處理代碼

2、調用API函數將鉤子函數掛入系統

3、創建消息循環,使鉤子運作起來

添加引用

使用鉤子需要用到函數,SetWindowsHookEx,UnhookWindowsHookEx,CallNextHookEx。及鍵盤鉤子鼠標鉤子的定義,及鍵盤消息,鼠標消息的結構體定義,均定義在pwinuser.h中。

#include "pwinuser.h"

創建需要掛入系統的消息處理函數

即鉤子函數,鉤子函數定義必須為制定的格式。

鉤子函數根據實際應用需求,決定是否調用CallNextHookEx,將消息傳遞給后面的鉤子處理。

首位的鉤子函數返回值決定該消息是丟棄,還是傳給系統消息處理函數,再分發給各窗口。

以下為鍵盤及鼠標鉤子函數的示例。

鍵盤鉤子函數

該鍵盤鉤子示例函數中,當檢測到按鍵‘1’按下時,調用Beep函數觸發蜂鳴器。

LRESULT CALLBACK KeyboardProc(intnCode,WPARAM wParam,LPARAM lParam)

{

KBDLLHOOKSTRUCT *pkbhs = (KBDLLHOOKSTRUCT *) lParam;

if(wParam == WM_KEYDOWN) //按鈕按下

{

switch(pkbhs->vkCode)

{

case0x31: //按鈕‘’

Beep();

break;

defaut:

break;

}

}

returnCallNextHookEx(NULL,nCode,wParam,lParam);

}

注:

1、WINCE鍵盤鉤子函數得到的WPARAM記錄的消息類別,如按鍵是按下消息WM_KEYDOWN還是彈起消息WM_KEYUP。

LPARAM指向鍵盤消息結構體KBDLLHOOKSTRUCT,里面記錄有詳細信息,如觸發的按鍵是什么,有沒有輔助按下ALT鍵或者CTRL鍵,等等。

2、鉤子隊列第一個鉤子的返回值決定系統是否能接受到該消息。

返回0表示,將消息傳遞給系統消息處理函數繼續處理。

返回1表示,丟棄消息,系統將收不到該消息。

調用CallNextHookEx表示調用下一個鉤子消息處理函數,如果不調用,那么后面的鉤子函數將不產生作用。

鼠標(觸摸屏)鉤子函數

該鼠標鉤子示例函數中,當檢測到鼠標或觸摸屏點擊時,調用Beep函數觸發蜂鳴器。

LRESULT CALLBACK MouseHookProc(intnCode, WPARAM wParam, LPARAM lParam)

{

MSLLHOOKSTRUCT *pmshs = (MSLLHOOKSTRUCT *) lParam;

if(wParam == WM_LBUTTONDOWN) //鼠標點擊處理代碼

{

Beep();

}

returnCallNextHookEx(NULL,nCode,wParam,lParam);

}

注:

1、WINCE鼠標鉤子函數得到的WPARAM記錄的消息類別,如是鼠標按下還是彈起,還是雙擊,移動,等等。

LPARAM記錄的詳細信息,如點擊坐標,滾輪參數等等。

2、觸摸屏消息和鼠標消息是一樣的。

3、鉤子隊列第一個鉤子的返回值決定系統是否能接受到該消息。

返回0表示,將消息傳遞給系統消息處理函數繼續處理。

返回1表示,丟棄消息,系統將收不到該消息。

調用CallNextHookEx表示調用下一個鉤子消息處理函數,如果不調用,那么后面的鉤子函數將不產生作用。

Beep函數

在本文示例中,將嵌入式板子GPIO15連接上一個蜂鳴器,通過設置GPIO電平觸發蜂鳴器。

在程序初始段打開GPIO,獲得GPIO句柄。

#include"isa_dio.h"

HANDLE hGpio;

hGpio = OpenGPIO( _T("PIO1:"));

添加Beep函數,通過GPIO句柄操作GPIO15。

voidBeep()

{

GPIO_OutClear(hGpio, GPIO15);

Sleep(10);

GPIO_OutSet(hGpio, GPIO15);

}

添加鉤子

在主線程中調用SetWindowsHookEx函數向系統添加鉤子。

第一個參數為添加的鉤子類型,WH_KEYBOARD_LL為鍵盤鉤子,WH_MOUSE_LL為鼠標鉤子。

第二個參數為注入的消息處理函數指針,即前面定義的鉤子函數。

第三個參數為鉤子程序的instance指針,本文介紹的鉤子并不需要掛載到dll中使用,所以簡單設置為NULL即可。

最后個參數為鉤子關聯的線程句柄,這里為0表示關聯所有線程,即全局鉤子。

函數返回NULL表示添加鉤子失敗,成功返回鉤子句柄。

示例代碼如下:

HINSTANCE hInstance = NULL;

HHOOK g_hKBDhook = NULL;

HHOOK g_hMouseHook = NULL;

g_hKBDhook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, hInstance, 0);

if(g_hKBDhook == NULL)

{

returnfalse;

}

g_hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, MouseHookProc, hInstance, 0);

if(g_hMouseHook == NULL)

{

returnfalse;

}

添加消息循環

鉤子機制是基于消息循環的,所以添加消息循環是必須的,如果沒有添加消息循環,會導致系統消息進入鉤子后卡死。

MFC框架的程序已經自帶消息循環。

而命令行的程序則需要在主函數里添加以下代碼。

MSG msg;

while(GetMessage(&msg, NULL, 0, 0)) {

TranslateMessage(&msg);

DispatchMessage(&msg);

}

刪除鉤子

當不需要鉤子時,應當主動釋放鉤子。

UnhookWindowsHookEx(g_ hKBDhook);

UnhookWindowsHookEx(g_hMouseHook);

英創提供了例程及源代碼,有需要的客戶可以聯系英創工程師獲得。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • WINDOWS
    +關注

    關注

    4

    文章

    3615

    瀏覽量

    91499
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6102

    瀏覽量

    36332
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    飛騰主板為信產業發展提高硬實力

    信息技術飛速發展的當下,信產業已成為我國實現科技自立自強、保障國家信息安全的關鍵領域。信,即信息技術應用創新,其核心目標是實現
    的頭像 發表于 07-22 18:20 ?156次閱讀

    DEKRA德凱成為沙特通信和信息技術設備技術法規認證機構

    近日,DEKRA德凱成功獲得沙特標準、計量和質量組織(SASO)認可,正式成為沙特通信和信息技術設備技術法規(Technical Regulation for Communications
    的頭像 發表于 07-15 14:27 ?264次閱讀

    科普|信是什么?一文讀懂“信息技術應用創新”戰略

    什么是信?信,即“信息技術應用創新”,是國家推動IT系統自主可控、安全可控的重要戰略工程。它不僅是技術層面的創新,更承載著保障國家網絡安
    的頭像 發表于 06-13 10:06 ?2163次閱讀
    科普|信<b class='flag-5'>創</b>是什么?一文讀懂“<b class='flag-5'>信息技術</b>應用創新”戰略

    基于Nordic nRF52840無線鍵盤鼠標物聯網解決方案

    隨著物聯網技術的快速發展,無線鍵盤鼠標方案在辦公場景中正發揮著越來越重要的作用。該方案基于BLE(低功耗藍牙)和物聯網技術,為用戶提供了無線、便捷、高效的輸入和控制體驗。 方案說明:
    發表于 03-25 17:44

    龍芯中科榮獲2024年度信息技術應用創新工作委員會卓越貢獻成員單位

    光南,工業和信息化部信息技術發展司系統創新應用處處長孟洪濤,中國電子工業標準化技術協會執行秘書長朵晶,信工委會秘書長趙成志等出席。會上,龍
    的頭像 發表于 01-23 10:50 ?723次閱讀

    芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位

    日前,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱 “信工委會”)2024 年度總結座談會于北京隆重舉行。此次會議對在信工作中作出突出貢獻的成員單位予以表彰。江蘇
    的頭像 發表于 01-20 09:56 ?660次閱讀

    瑞芯微開發板/主板Android系統APK簽名文件使用方法,實用干貨

    瑞芯微主板/開發板Android系統,APK系統簽名文件使用方法
    的頭像 發表于 12-26 09:43 ?964次閱讀
    瑞芯微開發板/主板Android<b class='flag-5'>系統</b>APK簽名文件<b class='flag-5'>使用方法</b>,實用干貨

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會支持,北京航空航天
    的頭像 發表于 12-24 09:57 ?525次閱讀

    有方科技參編的信息技術團體標準發布

    近日,有方科技參編的《信息技術產品供應鏈成熟度 共性指標 第1部分:企業背景評價》《信息技術產品供應鏈成熟度 共性指標 第2部分:技術掌控評價》《信息技術產品供應鏈成熟度 共性指標 第
    的頭像 發表于 12-23 10:44 ?625次閱讀

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?582次閱讀

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?997次閱讀

    RTOS中鉤子函數的用途及用法

    在很多操作系統中,都存在這樣一類API函數接口:HOOK函數(也叫鉤子函數)。
    的頭像 發表于 10-23 16:25 ?793次閱讀
    RTOS中<b class='flag-5'>鉤子</b>函數的用途及用法

    kvm切換器鼠標鍵盤怎么設置

    KVM切換器(Keyboard, Video, Mouse switch)是一種硬件設備,允許用戶通過一套鍵盤鼠標和顯示器來控制多臺計算機。這種設備對于需要管理多臺服務器或計算機的用戶來說非常
    的頭像 發表于 10-17 09:38 ?2474次閱讀

    梯度科技入選2023年信息技術應用創新解決方案名單

    日前,工業和信息化部網絡安全產業發展中心(工業和信息化部信息中心)在天津舉辦2024信息技術應用創新發展大會暨解決方案應用推廣大會。會上正式公布了2023年
    的頭像 發表于 09-09 16:29 ?781次閱讀

    MSP430 FRAM技術使用方法和最佳實踐

    電子發燒友網站提供《MSP430 FRAM技術使用方法和最佳實踐.pdf》資料免費下載
    發表于 08-23 09:23 ?0次下載
    MSP430 FRAM<b class='flag-5'>技術</b>–<b class='flag-5'>使用方法</b>和最佳實踐
    主站蜘蛛池模板: 亚州精品视频 | 精品国产福利在线视频 | 特黄AAAAAAA片免费视频 | 成人片免费看 | 中文字幕一区二区三区在线观看 | 草莓视频免费看 | 妖精视频免费看 | 色男人综合 | 沟沟人体一区二区 | 小箩莉奶水四溅小说 | 琪琪see色原网站在线观看 | 成 人 片 免费播放 成 人 免费 黄 色 网站无毒下载 | 国产欧美日韩精品a在线观看高清 | 国产精品高潮AV久久无码 | 国产精品久久久久永久免费看 | 免费看午夜高清性色生活片 | 色综合久久天天影视网 | 第一次破女初国产美女 | 国产成人一区二区三区在线观看 | 干性感美女 | 精品高清国产a毛片 | 999久久狠狠免费精品 | 99久久精品免费国产一区二区三区 | 女性爽爽影院免费观看 | china18一19 第一次| 国产三级精品三级男人的天堂 | 国内2018年午夜福利5678 | 直插下身完整的欧美版 | 无码AV精品一区二区三区 | 乐乐亚洲精品综合影院 | 办公室里做好紧好爽H | AV国产乱码一区二区三视频 | 色狠狠色狠狠综合天天 | 在线观看qvod | 婷婷四房播客五月天 | BLACKED太粗太长 | 最近日本MV字幕免费观看在线 | 国产成人免费视频 | 天天操天天干天天透 | 高清国产mv视频在线观看 | 国产欧美精品国产国产专区 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品