V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xiangpeng
V2EX  ›  .NET

C#实现远程桌面

  •  
  •   xiangpeng · 2017-02-10 11:20:43 +08:00 · 4479 次点击
    这是一个创建于 2846 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想通过 c#实现远程桌面,类似 teamviewer 那种被远程的机器用户仍然可以控制的, c#自带的 com 组件实现起来与 Mstsc 相同,有个思路是客户端获取截屏发送到服务端,只有一个大概思路,有没有大神指导一下,给个可行的思路或者方法,谢谢。

    5 条回复    2017-02-11 17:28:02 +08:00
    Caskia
        1
    Caskia  
       2017-02-10 11:48:46 +08:00
    2 年前弄过一个玩具,思路 socket 建立链接,发送截图,鼠标坐标, IO 命令,从而实现同步操作。
    yicong135
        2
    yicong135  
       2017-02-10 22:13:35 +08:00
    发图片,效率好低啊
    mstsc 这种比较好把,最优就是像 radmin 这种用虚拟显卡驱动来传画面
    ioriwong
        3
    ioriwong  
       2017-02-10 23:46:06 +08:00 via iPhone
    3389 就好了
    ihacku
        4
    ihacku  
       2017-02-11 00:59:18 +08:00 via iPhone
    SlipStupig
        5
    SlipStupig  
       2017-02-11 17:28:02 +08:00
    @yicong135 rdp 本身就是驱动直接发送位图信息,数据还压过了

    远程屏幕实现里面东西很多,又简单的玩法又复杂的玩法,很早前用 C 实现过:
    方法如下:
    1.把屏幕分为 16*16 方格
    2.Hook 鼠标 //窗体事件,当触发的事件的时候,根据消息类型去定位要发送窗体或鼠标事件位于哪个区块范围,发送指令就是, 1 号区块的图像是什么, 2 号区块的是什么....如果没有消息就不传送任何图片保持心跳
    3.数据压缩, 7Z 压缩效率和速度都不错
    4.位图缓存,每次发送真正图像的时候先发送一个 hash 值,本地如果又相对的位图块就直接从本地填充,而不从远程下载,没有的话就缓存到本地
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2964 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 14:59 · PVG 22:59 · LAX 06:59 · JFK 09:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.