簡體   English   中英

將窗口置於前台的問題

[英]Problems with bringing window to foreground

我有一個用戶實際上沒有關閉的應用程序-隱藏主窗口而不是關閉整個應用程序。 然后,當用戶再次啟動同一應用程序時,第二個實例與第一個(已運行)實例進行通信,第一個實例嘗試將主應用程序窗口置於前台。

問題在於,這種方法大多數情況下都會成功,但有時會失敗。 我已經完成了研究,似乎后台進程無法將其窗口置於前台,這在一定程度上是合理的。 解決方案是從第二個實例調用AllowSetForegroundWindow(由於用戶已啟動它,因此可以將窗口帶到前台),並授予該程序的第一個實例的權限。

我的問題是:如何確保我的代碼能正常工作? 我之所以這樣問是因為我沒有找到一種方法來檢查AllowSetForegroundWindow調用是否有效。 我不知道什么時候第一個實例將無法設置前景窗口(因為它大多數都可以工作,而很少不能),所以我不知道如何檢查一切是否正常。 有想法嗎?

AllowSetForegroundWindow()具有返回碼,您可以檢查該返回碼:

如果調用進程無法設置前台窗口,則該功能將失敗。

啟動應用程序時,它應該能夠設置前景窗口,因此AllowSetForegroundWindow() 應該成功,並且現有應用程序的實例應該能夠位於最前面。

但是,沒有辦法保證這將一直有效。 您所能做的就是盡可能地實施文檔化的系統。 在最壞的情況下,您現有的應用會在其他窗口后面打開,用戶必須單擊它才能將其置於最前面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM