2011-05-09 59 views
0

我正在編寫跨平臺的Windows Mobile 6.1/6.5上的C#和C/++之間的應用程序。我們目前在我們的設備上運行了一個自助服務終端應用程序,並希望添加能夠來回切換到第二個自助服務終端應用程序。使用Windows Mobile 6.1/6.5上的全局熱鍵切換應用程序

我們的目標是建立一個全局熱鍵,在按下時切換進程窗口(類似於alt + tab的工作方式)。我們已經有了這兩個應用程序,並且我已經編寫了一些切換進程的代碼,但是要讓項目的全局熱鍵部分正常工作還需要很長時間。

從我所做的所有閱讀中,我的理解是,監視全局按鍵的最佳方式是鏈接到系統消息泵the SetWindowsHookEx function in coredll.dll。不幸的是,我也讀過這個功能在技術上沒有在平臺上支持。

我還發現一些教程建議在MFC框架中使用帶有ON_WM_KEYUP/ON_WM_KEYDOWN宏的消息映射,但找不到任何特定於Windows Mobile的文檔。當我嘗試使用the documentation here時,我的設備不斷崩潰。

在平臺上設置某種全局密鑰鉤子是否有公認的最佳做法?如果沒有,是否至少有技術支持?

在此先感謝。

ReplyQuote

回答

0

爲什麼不使用RegisterHotKey呼叫並用它來交換應用程序? IIRC硬件按鈕通常映射到從0xC1(193)開始的鍵碼。

0

我們實際上結束了在單獨的線程上輪詢coredll.dll中的GetAsyncKeyState函數。線程監視特定的鍵,並在按下時拋出一個事件。

由於該事件在密鑰輪詢線程上執行,因此必須確保在拋出事件時使用委託在GUI線程上調用其處理程序。

0

我會去鍵盤鉤,但只有當RegisterHotKey不適用於您的特定場景。

從我所做的所有閱讀中,我的理解是,監視全局按鍵的最佳方法是使用coredll.dll中的SetWindowsHookEx函數鏈接到系統消息泵。不幸的是,我也讀過這個功能在技術上沒有在平臺上支持。

沒有技術上的支持,理論上是正確的,但我還沒有看到一個WM 6.5。*設備在現實中還沒有支持它。鍵盤掛鉤是垂直市場自定義堅固的WM設備應用程序的一個重要特徵,我認爲它不能被刪除,以實現向後兼容。

WM空間的企業方太重要了。