Windows DWM Hook 投影桌面融合


基於Windows DWM Hook的投影桌面融合,是其中一種實現Windows桌面融合的技術;

這種技術有優點:

可以基於普通的拼接,或者游戲顯卡就能實現桌面融合了,不需要要特定的專業顯卡支持;

但也有缺點:

桌面實際分辨率並沒有改變,還是原來拼接的分辨率,所以投影融合之后,事實上存在畫面壓縮變形了(比例不對)。

我一直對這種方式不太感冒,因為我一直推的是專業顯卡的桌融方式。這不疫情期間,老老實實待在家里,有時間好好的弄了一下,經過幾個月的努力,也把Windows 7(32&64位)的桌面弄出來了,這里記錄下研發歷程。

先show兩張效果圖:

 

1.既然是DWM Hook,第一步的技術就是把DMW.exe Hook下來。這位仁兄給我我最開始的提示信息,大家有興趣的話,可以看看參考:

https://www.cnblogs.com/weiym/p/3396274.html

2. DMW Hook下來之后,你會發現WIndows 7其實用的就是D3D10的渲染框架,准確點就是D3D10.1。但是早期的Win7和后來的Win7又有了比較大的變化,早期的Win7是6.1.7601,當時還沒有出來DX11,但是后來的6.2.9200則用到了Dx11。最大的區別就是d3d10_1.dll, d3d10_1core.dll, dxgi.dll這三個文件了。

3. d3d10開始,Directx的編程就取消了固定流水線(在Directx9.c的年代很流行),着實令人很不習慣。但往深層了想想,其實也好。不會搞得太亂了,一會固定,一會shader,不知道實際哪個在發生作用。DX10的生存時間很短,但跟DX11基本是一樣的。花點時間學習還是值得的。

4.對DWM的 Hook,就好比盲人摸象,它里面估計有不少未公開的_API在動作。干這種事必須要膽大、心細、本子厚。本子厚講的是存檔記錄,你永遠不知道昨天還可以的,今天怎么又有問題了,存檔很重要!

5. 還有的就是耐心了。如果不是疫情,我也靜不下心來,一點點扣出技術的細節。經常10幾天沒有一點進展,是很正常的事。如果我有老板,他肯定早就讓我去干別的了,這年頭,中國人哪里靜的下心來。

 

一件事能做成,技術是很重要。但是對於做成這件事的人來講,重要的卻又不是技術了,而是人心所向了。

Windows10的 DMW Hook桌融,還待進一步完善!有興趣的朋友可以一起交流,或者指點一二的!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM