天天看點

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鈎子來執行消息框預設回複元件提供的能力以外的任務。

本文轉自雷志剛 51CTO部落格,原文連結:http://blog.51cto.com/leizhigang/240022

繼續閱讀