项目中要求能有远程控制功能,这两天一直在找资料,有两个思路:
一是自己写,思想基本上就是,在被控端抓图传到控制端,然后将控制端的操作指令传到被控端。如果这样做涉及的知识比较多,有网络传输、WIN32API(查下来发现,鼠标键盘的操作,win32API是比较可行的)一系列的东西;
二就是利用现有的东西,使用mstsc方案;mstsc是WINDOWS里的终端功能的接口,基于Remote Desktop Protocol的东西,转来转去,发现最方便的是 ActiveX component mstscax.dll的使用,这个直接就可以在winform中生成一个对象。
考虑到工作量和时间,选第二个思路比较方便。
用系统自带的远程桌面连接的时候,发现它并不需要占用多少网络资源,而且很流畅,不像QQ之类的远程协助,要一直截图,网络资源占用大,速度还很慢。
mfc的mstsc调用:
问题:
1、提示远程控制相关错误,需要解决用户系统设置,用户的系统设置不尽相同。查找2天相关解决办法都没有正确办法。
截图传图的方案:
Cximage方案;
有一个开源的方案使用cximage图形库,可以远程控制远端PC,但是需要自行编译cximage图形库,而Cximage库的编译有坑,短时间没有能够摆平,、使用某个公司编译的库,但是这个库在部分电脑上又不能运行;继续使用这个软件后发现这个开源的软件时不时的会崩溃闪退,于是放弃。但是Cximag库值得研究,因为AI也会用到这个图形库。
VNC方案:
VNC的衍生版本非常多,多到眼花缭乱,不知道用哪一个版本。
在编译了多个衍生版本后,终于找到一个源码可用的tightVNC。成功远程控制了一把。而且源码在手,界面控制都好说好办了。而且是GNU通用公共授权开源自由软件、商业使用,通用性上teamview也是在VVNC基础上搞的,tightVNC用起来还不能穿透内网,不过在局域网内使用还可以,满足当前我们项目需要,就是比较卡部分软件的自绘制控件点击不了。
TightVNC 远程桌面
Virtual Network Computing (VNC) 是贝尔实验室研发的一款平台独立的桌面共享系统,由客户端(viewer)与服务端两部分构成。
服务端:安装在远程计算机上,启动后供客户端远程登录,有些系统自带vnc远程服务(如 Mac)。
客户端(viewer):安装在本机,用于登录远程桌面。三个著名的客户端:TightVNC,UltraVNC 与 RealVNC。
三者的比较:VNC Comparison and Review: TightVNC Vs UltraVNC Vs RealVNC。
本文着重介绍 TightVNC,内容包括:TightVNC的编译,TightVNC远程登录Windows桌面,TightVNC远程登录Mac OS X的桌面 。
开放源代码社区(the open source community)也不断地改善着这个远程访问工具。尤其是作为其开发者的Constantin Kaplinsky公司,它维持有一项工程,致力于开发一个可以克服VNC不足的改进版VNC远程管理工具。结果就产生了这一款更神通广大的应用程序,唤名TightVNC。
一方面,TightVNC在宣传中称自己是操作平台不依赖的客户端/服务器双重安装包,能够远程访问图形桌面;另一方面,TightVNC又是一款免费软件,企业完全可以用之解决远程连接的需求。它的发布方式采用GNU通用公共授权。自安装Windows程序包可到SourceForge.net网下载。Linux、 UNIX,及Java(只有查看器)的版本也都有提供。