JZGKCHINA
工控技术分享平台
尊重原创 勿抄袭
勿私放其他平台
写在前面
故事要从很久以前说起,那时王老湿刚参加工作不久,对组态软件只是初窥门径,也就刚刚能够按照领导的要求画出一些阀门水泵的工艺图的水平。突然有一天领导过来给我说有个客户提了个要求,要在RSViewSE软件里面显示另一台计算机的桌面。
OMG
,这是什么骚操作呀?
虽然王老湿那会是很不情愿,但还是要圆满完成领导交代的任务呀。幸亏有度娘。经过碎片拼凑,终于实现了这个功能,现将实现过程记录一下,分享给大家。如果你们觉得有参考价值就麻烦动动手指转发出去,给王老湿来点鼓励。
实现在组态软件里面调用其他计算机桌面的方法有2两种,一种是在RSView里面使用命令调用mstsc.exe程序,另外一种是嵌入RDP(Remote Desktop Protocol远程桌面协议)的ActiveX控件。
另外需要说明一下,我们常说的RDP(远程桌面)其实是由Server(服务器)和Client(客户端)组成,被连接的称为Server,执行连接的称为Client。RDP协议跟随Windows发布的版本提升也会做相应的版本提升,当然也可以单独提升RDP的版本。当前发布的Windows系统中,凡是家庭普通版的操作系统如Win7家庭版、Win10家庭版等,都是不支持RDP Server功能的。
对于个人版的Windows操作系统,理论上只支持被一个RDP Client连接,Windows Server 系统可以支持多个Client连接,但是需要激活授权。
一、调用MSTSC.exe
MSTSC.exe程序为Windows系统自带的RDP Client来接程序,你可以通过在开始,所有程序,附件,远程桌面这个路径打开,或者通过cmd调用DOS运行框输入mstsc回车调用。实际上,当你使用mstsc建立远程桌面连接后,可以将这个连接记录另存为一个连接程序,RSViewSE软件也是使用这个文件来实现这个功能的。
首先建立连接,设置一些参数
将该链接另存为一个文件
双击这个Win7RDP文件就可以直接连接到远程桌面了。
接下来看如何在RSViewSE里面调用它。
思路:
计划在RSViewSE里面使用按钮触发脚本调用RDP连接,但是需要考虑避免多次调用造成的计算机奔溃,所以得想个办法来判断如果已经调用了RDP连接,后面再点击这个按钮就不起作用。因为mstsc.exe运行起来后是应用程序,会在任务管理器的进程里面显示这个应用程序的连接状态,所以,我们需要判断是否有这个进程就可以知道当前有没有这个连接了。如果有这个进程,就干掉它,然后重新执行连接,如果没有,就直接执行连接。
脚本代码如下
如果你对执行完的效果不满意,可以去刚才创建的Win7RDP.rdp文件里面调整相应的参数,如下:
是否允许声音或其他硬件设备挂载过来
还有连接效果体验及连接画面质量等参数设定
在RSViewSE里面第一种远程桌面调用方法介绍完毕。但是实际运行起来后,你会发现mstsc.exe程序长时间运行会占用很多的CPU资源,这可能是个Windows的bug,或许更高版本的RDP协议就没有这个bug了。