Windows API有一個名爲GetForegroundWindow
的方法。 但是,當您點擊它時,它會將桌面視爲前景窗口。 我們都知道,當它發生時,以前的前景窗口不會被它疊加。 如何獲得真正的前景窗口句柄?如何在Windows上獲取前景窗口?
回答
我想你是在過度工程你的解決方案。如果您的應用程序窗口在您收到更新時不是前臺窗口,請將該窗口刷新。閃爍的目的是捕捉用戶的注意力,並且您無法確定您是否以編程方式注意到他們的注意力。
看起來你真正想知道的是:「我的窗口部分是否可以對用戶顯示?」這是一個相當複雜的問題,即使您正確回答,您也無法知道用戶是否會注意到這一變化。
的社區指南是什麼,我只是想實現它,因爲我測試了另一個應用程序(Google Talk),它的工作原理與我描述的一樣。 – 2011-03-02 00:05:03
@Jader:即使你決心要做到這一點,找到「前景」窗口並不是要走的路 - 正如Peter在他對你的問題的評論中指出的那樣,可能有不止一個(而且他們可能不是無論如何都會遮住你的*窗口)。如果你只是想知道用戶能否看到你的窗口,我懷疑檢查剪切區域(對於你的**窗口)是要走的路......但這是另一個問題的主題。 – Shog9 2011-03-04 02:07:36
兩個「桌面」(探險桌面上的真正的桌面窗口的頂部列表視圖)和任務欄是真正的Windows這裏可能是「工作」的用戶(Tab'ing左右,使用菜單等)
如果你想找到壞你必須自己找到它的「真正的」前臺窗口,最好的辦法是在Z順序的頂部會爲窗口,也許是這樣的:
... enumfunc(hwnd,...)
{
if (GetClassName(hwnd)!= "Shell_TrayWnd")
{
if (IsWindowEnabled(hwnd) && IsWindowVisible(hwnd) && GetWindow(hwnd,GW_OWNER)==NULL)
{
DoSomethingWithRealForegroundWindow(hwnd)
return FALSE
}
}
}
EnumWindows(enumfunc,0)
TaskSwitchXP是一個開放源替代標籤,它可能有一個更好的算法,你可以使用...
- 1. 在Windows 8上設置前景窗口
- 2. 如何在前景窗口獲取之前捕獲擊鍵?
- 3. 如何不斷獲取當前的前景窗口?
- 4. 如何在無窗口的Windows窗體上獲取Aero Glass?
- 5. 如何在滑動窗口中獲取當前窗口時間?
- 6. 如何獲取所有用戶的前景窗口?
- 7. 如何從Windows服務獲取前臺窗口?
- 8. 如何強制Mac窗口前景?
- 9. 窗口前景無窗口把手
- 10. 如何在創建任何窗口之前獲取窗口框架的寬度?
- 11. SAPUI5:獲取存在於當前窗口
- 12. Applescript - 使窗口前景
- 13. Popup只有前景窗口
- 14. 按下熱鍵時獲取前景窗口
- 15. 在彈出窗口上獲取當前窗口(谷歌瀏覽器擴展名)
- 16. 在開始之前在窗口上等待Git獲取
- 17. 獲取背景窗口列表。
- 18. 獲取背景窗口的縮略圖
- 19. 獲取python景的窗口寬度
- 20. 獲取窗口背景顏色
- 21. 如何在Python中獲取當前活動窗口的名稱?
- 22. 獲取Windows下的當前窗口位置
- 23. 如何獲取當前活動的Windows資源管理器窗口的HWND?
- 24. c# - 將當前窗口設置爲前景窗口
- 25. 在python/kivy上獲取當前窗口小部件的id
- 26. 如何在UserControl中獲取主窗口
- 27. 如何在iOS中獲取主窗口?
- 28. 如何在LockScreen中獲取窗口()?
- 29. 如何獲取當前窗口ID或某個Outlook新電子郵件窗口。
- 30. 如何在子窗口中獲取父窗口標籤的html?
假設您在桌面上有兩個可見的窗口。點擊桌面後,哪一個是「真正的」前景窗口? – 2011-03-01 19:29:04
這將有助於知道你想要達到的目標。你寫的問題沒有意義。 – 2011-03-01 20:03:47
這絕對不是正常的行爲,在我的任何機器上都沒有見過。注意嘗試模擬桌面的'附加組件'。 – 2011-03-01 20:04:38