問題描述
Qt中有一個現成的類–QsystemTrayIcon類可以實現在系統托盤圖標上冒泡彈出提示消息的功能,但是這個類使用時有一個問題:在Windows 10 或 Windows Server 2016上會快速彈出提示消息時,導致進程explorer.exe和ShellExperienceHost.exe內存和句柄上漲,進而導致explorer.exe不斷重啓,時間不定。
原因分析
用proces explore工具分析兩個進程的句柄發現,ShellExperienceHost.exe打開了1000多個系統默認的提示音文件,該文件以.wav爲後綴,所以分析的結論就是Windows 10 或 Windows Server 2016在有進程冒泡彈出提示時候,會同時發出提示聲音,而之前的系統則不會發出提示聲,只冒泡,所以使得軟件在Win 7上毫無問題,在Win 10 上則有此問題。
解決方案
1、自定義和實現一個彈出提示窗口方法。
2、在Windows 10 或 Windows Server 2016禁止聲音特效,這樣做不會影響電腦正常的發出聲音。
後續
如果有網友遇到同樣的問題,希望能給您一個參考和方向,如果您有更好的方法,歡迎留言告訴我,謝謝!