本發明專利技術涉及一種嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法。一種嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,通過如下步驟完成用戶按鍵信息從用戶操作按鍵到目標窗口正確接收;a、采用WES7低層鍵盤鉤子攔截用戶按鍵并將按鍵封裝為按鍵消息發送給業務軟件專用于接收用戶按鍵消息的窗口;b、業務軟件窗口收到消息后再將接收到的按鍵消息解析出來并重新封裝為WES7標準按鍵消息,同時設置當前線程鍵盤狀態掩碼;c、然后將按鍵消息發送給需要按鍵的窗口。在多瀏覽器窗口模式下,用戶操作按鍵后,無論瀏覽器窗口有無焦點,這些瀏覽器窗口中的頁面均能正確接收到用戶操作的按鍵消息。就像用戶直接在該瀏覽器窗口高亮的情況下操作按鍵一樣。
【技術實現步驟摘要】
本專利技術涉及一種嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法。
技術介紹
用戶通過使用遙控器或外接鍵盤操控嵌入式設備中的核心業務軟件,是嵌入式設備使用的基本操作方式。在基于微軟WES7 (全稱Windows Embeded Standard 7)的嵌入式設備上,這一操作方式仍然是用戶使用該設備的主要操作方式之一,但是由于WES7嵌入式設備除了提供紅外接口供遙控器使用外,往往還提供了 USB接口供鼠標、鍵盤使用;同時WES7是多任務操作系統,用戶可能會同時啟動多個軟件,這些軟件中有一些是第三方軟件,這些軟件可能在某個時刻會彈出某個窗口。在這種情況下,如何實現核心業務軟件能夠始終正常響應用戶按鍵(遙控器或鍵盤)操作而不受鼠標操作和其他軟件啟動退出、窗口高亮等搶奪業務軟件窗口輸入焦點行為的影響就是要解決的關鍵技術問題。目前解決上述問題的常用技術是設法讓要接收按鍵的軟件窗口始終高亮。由于WES7在收到用戶按鍵時,默認會將該按鍵發送系統當前高亮的窗口,因此目前可用的一種解決方案是監測軟件窗口高亮狀態,當發現不是高亮時強制設置其為高亮。此方法一般情況下沒有問題,但是由于WES7的窗口高亮狀態總是臨時狀態,這樣就需要始終檢查和維護該軟件窗口的高亮狀態,一旦發現用戶啟動了其他軟件或操作了其他軟件窗口導致本軟件高亮狀態消失,就要趕緊再設置本軟件為高亮狀態,這樣在非高亮至高亮狀態的之間就有一個空閑時間,若在這個空閑時間內用戶操作了按鍵,就會出現按鍵消息被目標窗口遺漏的情況。從另一方面來講,現在B-S架構是互聯網業務的主流架構模式之一,在WES7嵌入式設備軟件系統中,業務軟件常常以承載WEB頁面的WEB客戶端軟件的形式存在。由于WEB業務的復雜和多樣性,有時需要兩個或多個WEB窗口同時接收和處理用戶按鍵。在這種情況下,如何實現業務軟件收到按鍵后,將按鍵正確的分發給需要接收按鍵的WEB窗口處理,就是要解決的另一關鍵問題之一。目前解決這一問題的常用技術是將接收到的按鍵值重新組裝為系統標準按鍵消息WM_KEYDOWN/WM_KEYUP,并通過WINDOWS API PostMessage函數投遞該消息到希望接收按鍵的窗口。該技術對于普通WINDOWS窗口是有效的,但對于內嵌IE控件的WEB頁面窗口則是無效的,表現在WEB頁面窗口的WEB頁面接收不到發過來的普通按鍵。
技術實現思路
本專利技術針對現有技術不足,提出一種嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,可以實現在多瀏覽器窗口模式下,用戶操作按鍵后,無論瀏覽器窗口有無焦點,這些瀏覽器窗口中的頁面均能正確接收到用戶操作的按鍵消息。本專利技術所采用的技術方案一種嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,通過如下步驟,完成用戶按鍵信息從用戶操作按鍵到目標窗口正確接收; a、采用WES7低層鍵盤鉤子攔截用戶按鍵并將按鍵封裝為按鍵消息發送給業務軟件專用于接收用戶按鍵消息的窗口; b、業務軟件窗口收到消息后再將接收到的按鍵消息解析出來并重新封裝為WES7標準按鍵消息,同時設置當前線程鍵盤狀態掩碼; C、然后將按鍵消息發送給需要按鍵的窗口。所述的嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,實現步驟a的流程如下 1)編寫底層鍵盤鉤子程序(DLL程序),在其中指定業務軟件專用于接收按鍵消息的窗口標識; 2)編寫底層鍵盤鉤子的管理程序(EXE),用于安裝底層鍵盤鉤子; 3)管理程序運行時調用系統API函數SetWindowsHookEx在系統中安裝該底層鍵盤鉤子,底層鍵盤鉤子即時生效; 4)戶操作按鍵時,系統將按鍵傳遞給低層鍵盤鉤子進行攔截處理; 5)低層鍵盤鉤子收到系統傳過來的按鍵后,將該鍵值和當前功能鍵CTRL/ALT/SHIFT/WIN的按下抬起狀態封裝為自定義按鍵消息發送給業務軟件專用于接收按鍵消息的窗口。所述的嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,業務軟件窗口收到鍵盤鉤子發過來的按鍵消息后,解析出當前按鍵和系統功能鍵當前狀態;將當前鍵值封裝為WES7標準按鍵消息WM_KEYDOWN/WM_KEYUP,將功能鍵當前狀態與系統當前鍵盤狀態掩碼進行組合,并調用系統API函數SetKeyboardState重新設置到當前按鍵輸入線程中,以確保系統當前鍵盤狀態跟鍵盤鉤子收到按鍵時的系統當前鍵盤狀態一致。所述的嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,確定需接收按鍵的WEB窗口,然后遍歷這些窗口,針對每個窗口,置其中WEB控件為有焦點狀態,然后將封裝好的WM_KEYDOWN/WM_KEYUP消息以PostMessage方式發送給該WEB控件的內部窗口 ;這樣,每個需要接收按鍵的WEB窗口的WEB頁面就都正常接收到按鍵了。本專利技術的有益積極效果1、本專利技術WES7嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,在多瀏覽器窗口模式下,用戶操作按鍵后,無論瀏覽器窗口有無焦點,這些瀏覽器窗口中的頁面均能正確接收到用戶操作的按鍵消息。只要按照本文中的方法給WEB窗口發送按鍵,就能保證WEB窗口頁面正常收到按鍵,就像用戶直接在該瀏覽器窗口高亮的情況下操作按鍵一樣。2、本專利技術WES7嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,適用范圍廣,可應用于WES7,還可應用于標準WINDOWS 7。用戶進行按鍵操作時,目標軟件窗口接收按鍵事件無遺漏且不受鼠標操作和其他軟件啟動、退出、窗口顯示隱藏的影響;用戶體驗好,按鍵事件無遺漏。3、本專利技術WES7嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,業務軟件可以將接收到的原始按鍵消息轉換為其他按鍵或按鍵組合發送給WEB頁面的目的。這樣當遙控器鍵值變化或業務頁面鍵值變化時,就能輕易應對。擴展性好。鍵盤鉤子與業務軟件既可以處于同一進程,也可以處于不同進程,本解決方案都有效。兼容性好。具體實施例方式實施例一本專利技術嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,通過如下步驟,完成用戶按鍵信息從用戶操作按鍵到目標窗口正確接收; a、采用WES7低層鍵盤鉤子攔截用戶按鍵并將按鍵封裝為按鍵消息發送給業務軟件專用于接收用戶按鍵消息的窗口; b、業務軟件窗口收到消息后再將接收到的按鍵消息解析出來并重新封裝為WES7標準按鍵消息,同時設置當前線程鍵盤狀態掩碼; C、然后將按鍵消息發送給需要按鍵的窗口。實施例二 本專利技術嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,與實施例一不同的是,進一步的公開了其中步驟a的實現流程如下 1)編寫底層鍵盤鉤子程序(DLL程序),在其中指定業務軟件專用于接收按鍵消息的窗口標識; 2)編寫底層鍵盤鉤子的管理程序(EXE),用于安裝底層鍵盤鉤子; 3)管理程序運行時調用系統API函數SetWindowsHookEx在系統中安裝該底層鍵盤鉤子,底層鍵盤鉤子即時生效; 4)戶操作按鍵時,系統將按鍵傳遞給低層鍵盤鉤子進行攔截處理; 5)低層鍵盤鉤子收到系統傳過來的按鍵后,將該鍵值和當前功能鍵CTRL/ALT/SHIFT/WIN的按下抬起狀態封裝為自定義按鍵消息發送給業務軟件專用于接收按鍵消息的窗口。實施例三本專利技術嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,本文檔來自技高網...
【技術保護點】
一種嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,其特征是:通過如下步驟,完成用戶按鍵信息從用戶操作按鍵到目標窗口正確接收;a、采用WES7低層鍵盤鉤子攔截用戶按鍵并將按鍵封裝為按鍵消息發送給業務軟件專用于接收用戶按鍵消息的窗口;b、業務軟件窗口收到消息后再將接收到的按鍵消息解析出來并重新封裝為WES7標準按鍵消息,同時設置當前線程鍵盤狀態掩碼;c、然后將按鍵消息發送給需要按鍵的窗口。
【技術特征摘要】
1.一種嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,其特征是通過如下步驟,完成用戶按鍵信息從用戶操作按鍵到目標窗口正確接收; a、采用WES7低層鍵盤鉤子攔截用戶按鍵并將按鍵封裝為按鍵消息發送給業務軟件專用于接收用戶按鍵消息的窗口; b、業務軟件窗口收到消息后再將接收到的按鍵消息解析出來并重新封裝為WES7標準按鍵消息,同時設置當前線程鍵盤狀態掩碼; C、然后將按鍵消息發送給需要按鍵的窗口。2.根據權利要求1所述的嵌入式設備中WEB業務軟件無干擾接收用戶按鍵的方法,其特征是實現步驟a的流程如下 1)編寫底層鍵盤鉤子程序,在其中指定業務軟件專用于接收按鍵消息的窗口標識; 2)編寫底層鍵盤鉤子的管理程序,用于安裝底層鍵盤鉤子; 3)管理程序運行時調用系統API函數SetWindowsHookEx在系統中安裝該底層鍵盤鉤子,底層鍵盤鉤子即時生效; 4)戶操作按鍵時,系統將按鍵傳遞給低層鍵盤鉤子進行攔截處理; 5)低層鍵盤鉤子收到系統傳過來的按鍵后,將該鍵值和當前功能鍵C...
【專利技術屬性】
技術研發人員:賈小波,張永強,趙付強,徐圓圓,連毅,劉飛,
申請(專利權)人:鄭州威科姆科技股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。