情況:我有一個軟件,通過互聯網執行屏幕共享,其中一個用戶充當演示者,其他用戶充當觀衆/參與者。如何屏幕捕獲,除了一些窗口
除了演示窗口,演示者還有一組顯示在屏幕上的非共享窗口(用於開始共享/停止共享等的按鈕欄,Skype窗口等)。
演示者可以通過屏幕共享軟件的設置進行配置,以使這些非共享窗口不可見(即它們不會出現在正在發送給與會者的屏幕共享中,但它們後面的窗口內容將會出現在屏幕截圖中)。
截圖以大約10幀每秒,或更快發送。
問題:如何以編程方式捕獲屏幕,但這些非共享窗口除外?
注:
- 由於較高的幀每秒值,我不能最小化/最大化對這些窗口/組α,因爲這樣的話窗口閃爍。該應用程序是用Win32 C++編寫的。
- 我會使用分層的窗口,但由於Windows 7桌面組合功能,這是不可用的開箱即用(並且在Windows 8中,您不能再使用DwmEnableComposition暫時和以編程方式禁用組合)
- 我可以使用分層窗口的方法適用於Windows XP/2000/7等,併爲Windows 8不同的方法(如果有的話),但我寧願一個單一的過程,在所有系統上的工作
- 我也可以嘗試通過捕獲單獨的圖像(桌面,需要捕獲的窗口)和使用它們的z-index來創建最終圖像來「構圖」屏幕截圖,但是由於所需的幀每秒值,該過程會太慢。
我確實知道MSFT的會議是一個很好的例子,雖然不知道如何做。 – zinking
謝謝 - 有類似的產品可以做到這一點(JoinMe或GTM),我也會嘗試調查這一點,但我希望得到更快的答案。 –
屏幕捕捉通常會捕獲「窗口上方的屏幕區域」,而不是窗口本身的繪製內容。您可以嘗試捕獲所有可見的頂級窗口並重新組合它們。 – Deanna