远程控制技术

搞技术的都知道远程控制软件,远程控制软件很多,至少有一个大家是都知道的,就是VNC。VNC有源代码,想知道是怎么实现的,看下代码就好了。

我这里先说远程控制是怎么传输图像的。简单点说,就是抓取图像,压缩,发送,接收,解压缩,绘制。抓取图像的时候,只抓取变化的部分,所以抓取图像就分为两部分,获取图像变化部分和截图。最简单的方式是,使用消息钩子获取图像变化部分,具体参见VNC,获取可能的变化矩形,截图使用GDI,直接把屏幕DC里的数据BitBlt出来。复杂一点的方式是,使用mirror驱动,mirror驱动就是一个只剩壳子的显卡驱动,系统会对mirror驱动进行显卡驱动的镜像调用,mirror驱动里获取变化的矩形,mirror驱动里同时也维护了一个屏幕图像的拷贝,通过直接从该拷贝中截图,比GDI截图性能高了不止一点点。还有一种方式,mirror里不是获取矩形,是获取所有的操作的参数,然后绘制的时候调用对应的操作的GDI函数来绘制,但这样虽然会带来一些好处,也带来大量的问题,一般不要轻易尝试。

再说下压缩,对于远程控制的性能,压缩是绝对的最大影响,因为抓取图像部分大家现在都能掌握(除了mirror获取操作),一些优化的手段,技术比较好的开发人员也都能想出来,网络传输除非写的超烂,否则没什么影响,而压缩就完全不同了,最好的压缩都是那些没有公布出来的。VNC使用的zlib进行无损压缩,对于局域网环境已经是完全足够的,对于一般的窗口环境(没有出现很多图像),也能保持10几K的数据量大小,如果压缩做的好的话,可以压缩到10K以内,甚至接近5K,这样在通过internet去操作也完全不是问题了。

对于输入的处理,鼠标输入完全可以通过消息来搞定,至于键盘就要用到钩子了,在被控端调用模拟输入的函数即可。

远程控制软件经常包含文件管理功能,包括文件的传输和文件的增、删、改、查,这些都好实现。

至于一些远程运行命令、查看进程列表之类的东西,也容易实现,只要会只用相关的API即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值