有沒有辦法撤銷對AllowSetForegroundWindow(ASFW_ANY)
的調用?撤消/重置AllowSetForegroundWindow()調用
的大圖:
- 我希望我的exe文件的同時運行一個進程。
- 爲了實現這個目標,如果一個進程已經存在,那麼這個進程就會使用命名管道&相互通信,它的窗口必須放在前面。
- 爲了能夠做到這一點,最新的過程必須設置
AllowSetForegroundWindow()
與現有的進程ID。- 我不想獲取進程ID(對不起我的懶惰),所以我打算做的是:1.用ASFW_ANY撥打
AllowSetForegroundWindow()
2.爲防萬一發生錯誤,請撤消撥打AllowSetForegroundWindow()
這樣別人就不能從我的過程中竊取焦點。
- 我不想獲取進程ID(對不起我的懶惰),所以我打算做的是:1.用ASFW_ANY撥打
在簡單的話,我想允許其它進程從我偷的焦點,僅在特定的時間窗口...
任何一個面臨着類似的問題早,發現什麼解決辦法?
另外,請讓我知道如果您有任何更好的建議/替代...
你可以完全擺脫'AllowSetForegroundWindow'調用。當現有流程需要關注時,它會詢問最新流程。如果沒有請求進入,那麼最新的進程什麼也不做。 – 2012-04-04 19:28:09
@RaymondChen我沒有得到它......如果有請求進入,最新進程應該做什麼? – 2012-04-05 05:11:44
你說這兩個進程(稱它們爲A和B)已經彼此通信,並且你有A調用'AllowSetForegroundWindow',以防B想調用'SetForegroundWindow'。相反,只需讓B告訴A,「請在此窗口上爲我調用'SetForegroundWindow'。」 – 2012-04-05 08:07:38