Jas*_*son 5 windows hook vnc remote-desktop
我问这个问题是因为我可能会在几周内研究它,但我希望这里的某些人知识渊博并能指导我.
我的问题源于试图制作远程桌面软件(仅仅是为了好玩)的几年挑战.起初我发送了整个桌面的简单PNG.然后我终于进入镜像驱动程序捕获(DemoForge的DFMirage镜像驱动程序),这是超级快速的.但它绝对不够快.我试图通过将图像分成16个16个图块来实现缓存,这将是很多重复,我只需要发送哈希,但它通常只是一种迟滞和消失.
我还有另一个涉及API挂钩的项目.我正在这个其他项目中挂钩Direct3D.从C#开始,这意味着使用像EasyHook这样的挂钩库,因为C#是一种托管语言.我想知道是否可以将其应用于我的远程桌面项目.
问题:是否可以,如果可能,我可以将gdi32.dll挂钩以将所有桌面绘图重定向到我的应用程序?
但是等等,不要跳到回答,因为我的问题本身可能不正确.
当然,我的最终目标是将屏幕从一台计算机有效地转移到另一台计算机.现在,VNC和大多数远程桌面产品通过将屏幕转换为图像来工作.作为像素数据.虽然这非常灵活,但它肯定会尽可能慢.
所以我的猜测是gdi32.dll绘制了你在桌面上看到的所有东西.它是否正确?我认为我错了,因为DWM aero似乎使用更先进的东西.那么在桌面上绘制所有东西是什么呢?窗户是如何绘制的?
我的想法是,如果我可以拦截所有绘图功能,那么我可以超越像素级别,变得像Windows远程桌面,我发送绘图命令而不是实际像素.
如果我完全不对劲,那么远程桌面如何"知道"如何发送这些原始绘图命令?文档说远程桌面有一个"底层渲染引擎",可以"理解"屏幕上的内容作为这些原始绘图命令,但我怎么能得到它呢?
我正在寻找一个答案,可以在这个图形级别上给我一个关于Windows内部的更大视角,以及如何实现我的目标的方向(如果它甚至是现实的).
| 归档时间: |
|
| 查看次数: |
297 次 |
| 最近记录: |