lzg_ad: 在WES中實現消息框默認回覆功能

我們會遇到這樣的情況,在機場候機大廳的航班時刻顯示屏上,經常會彈出一個錯誤對話框,因爲無人值守,所以這個對話框會長時間的停留在顯示屏上。對於這樣的問題,我們不能要求機場專門有一個人負責盯着,我們需要定製出一個智能的操作系統來屏蔽這些對話框,使設備能夠長時間穩定的運行。Windows Embedded Standard 2009中就具有這樣的功能,它能夠實現消息框的默認回覆功能。

    運行在操作系統上的應用程序和功能,通常需要用戶輸入。例如,顯示在一個消息框中的系統消息,要求用戶至少需要點擊確認並釋放消息框,使該系統能繼續操作。在一個無外設系統,或任何沒有用戶操作的系統上,不與消息框交互,可能會導致工作流程中斷並且系統無法執行任務。Windows Embedded Standard 2009爲您提供隱藏或禁止這些消息的能力。
在Win32中攔截消息
    Windows爲開發人員提供了一個機制,事件到達目的地之前,可以攔截它們。這種機制被稱爲Win32鉤子,由於這一機制以及涉及到的開發代碼,超出了本文的範圍,所以我們在這裏僅簡單介紹一下鉤子的原理。Win32提供了16個預定義的鉤子,您可以使用它們創建一個鉤子回調函數,用來過濾您指定要處理的鉤子。然後,您可以使用SetWindowsHookEx Win32 API註冊鉤子過程。例如,您可以爲WH_KEYBOARD_LL鉤子創造一個鉤子過程,攔截所有鍵盤事件,這樣就可以防止特定的鍵達到目的地了。要攔截應用程序消息,您可以實現MessageProc Win32 API並且處理對話框中事件上的一個過濾器。
    Windows Embedded Standard 2009爲您提供了一個簡單的解決回覆一個對話框的辦法:消息框默認回覆組件,它允許您指定默認處理消息選項。例如,如果該消息框有兩個按鈕,“OK”和“Cancel”,如果“OK”是默認值,“OK”將被選中。這相當於點擊“OK”。此外,消息框的內容被髮送到Windows事件日誌。這是很有幫助的,因爲消息框重要,不應該被忽視。事件日誌可以被遠程查看,或編程訪問。
實現消息框默認回覆
    要實現消息處理,添加Message Box Default Reply組件,它位於目標設計器中組件瀏覽器“Embedded Enabling Features”分支下。圖3-4描述了消息框默認回覆組件設置。配置非常簡單:啓用或禁用消息框顯示,設置錯誤的嚴重性寫入日誌,並且啓用或禁用信息發送到事件日誌。
小結
    消息框默認回覆組件的目的是攔截消息。它提供了一些通常需要用戶輸入的消息處理標準選項。您可以創建一個更詳細和自定義的消息攔截功能,通過編程實現Win32鉤子來執行消息框默認回覆組件提供的能力以外的任務。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章