2014-06-20 113 views
2

我正在爲客戶開發應用程序並遇到問題。Windows應用程序需要關注

該應用程序會與手機通話並執行一堆呼叫處理。它所做的一件事就是顯示一個「應答呼叫」按鈕。用鼠標點擊此工作正常。

但客戶希望有一個鍵盤快捷鍵,這是一個問題。如果應用程序中的窗口具有焦點,我可以獲得焦點。但是,如果用戶使用不同的應用程序,Windows焦點竊取預防不允許我關注焦點。

請不要在這裏討論重點竊取的利弊。我已經知道它們,並已將它們提供給我的客戶。不管與否,他們仍然希望這樣做,他們正在付帳單,所以他們可以決定。

對此有許多解決方法,但它們似乎不再有效。例如,我將HKEY_CURRENT_USER \ Control Panel \ Desktop \ ForegroundFlashCount設置爲3和... \ ForegroundLockTimeout爲0.

那麼我的選擇是什麼?這是不可能的嗎?或者我必須構建一個病毒檢查器會討厭的鍵盤掛鉤應用程序?

這是一個Qt/C++應用程序,但如果你有C#示例代碼可以做到這一點,那也很好。

我希望你能幫上忙。

+0

您可能會檢查此解決方案:http://stackoverflow.com/questions/17403511/qwidget-on-mac-os-x-not-focusing-in-qt-5-x –

+3

如果您只需要一個特定的快捷方式,最好是保持焦點竊取保護狀態,並註冊單個系統範圍的快捷方式。 Qt不提供這種功能,但您可以使用'QxtGlobalShortcut'或基於WinAPI的解決方案。 –

+0

你想將焦點移回到你的應用程序,還是隻想抓住快捷方式?是的,這是一個令人震驚的想法,但如果客戶堅持,你可以做什麼? –

回答

2

我不知道這是多麼過時,但你可以嘗試RegisterHotKey

它允許您在系統範圍內監聽鍵盤事件,而不僅僅是當您的應用程序具有焦點時。您不必提供窗口句柄,如果您將該參數留空,則該事件仍會發布到您的線程。

相關問題