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