WinCE下的远程控制

简介: 以前在给别人介绍Windows CE的开发时,为了演示设备上程序的运行情况,就用Remote Zoomin来截屏,设备端一刷新,Remote Zoomin就得去手动Refresh一下,在CE和PC两边忙得不亦乐乎。

     以前在给别人介绍Windows CE的开发时,为了演示设备上程序的运行情况,就用Remote Zoomin来截屏,设备端一刷新,Remote Zoomin就得去手动Refresh一下,在CEPC两边忙得不亦乐乎。当时就想,要是有自动刷新的功能不就省去了这么多麻烦吗。如果能在PC端直接控制CE设备,岂不更好?

看了帮助文件,原来WinCE是支持RDP的,添加相应的组件,编译完成后,在设备上测试发现CE真的可以登陆Windows XP,而且效果还不错!但CE本身并不能做Server,只能做Client。所以直接利用现成的组件是不可能了,只能自己做一个这样的小工具,以免以后又忙得不可开交。

初步分析了一下,为了实现这个功能,CE端需要做两个事情,第一,实时截屏并发送给PC。第二,接收PC端发过来的命令(主要是鼠标和键盘的消息命令)并模拟鼠标和键盘事件。而PC端也只要做对应的两个事情,首先是接收CE端发来的屏幕内容的BUF并将其显示,第二是捕获鼠标和键盘的消息并给CE发送过去。这几件事情都比较容易实现。

先说CE端的截屏,主要工作就是将屏幕的设备环境拷贝到对应的内存设备环境里去,再发送DIB里的数据即可,PC调用函数StretchDIBits()显示接收到的Color Data。这里唯一需要注意的就是在截屏时并没有截取鼠标指针的信息,所以在截屏之后得手动画上鼠标的指针。否则,PC端就不能显示CE鼠标的位置和动作了。

模拟鼠标和键盘的事件在CE端是很容易的,用mouse_event()keybd_event()这两个函数就足够了。而PC端捕获鼠标和键盘的消息则有两种方法,方法一是在PreTranslateMessage中来做,方法二则是在各个消息处理函数中来做。这里需要注意一下,键盘的消息必须在PreTranslateMessage中处理,否则捕获不到。刚开始,我还在这里迷惑了一阵。L

原理的东西就不多讲了,其实跟Windows下的远程控制类软件的思路是一样的。接下来就考虑一些细节的问题。譬如通信的方式,EVC中的远程工具是可以通过ActiveSync来通信的,也可以用Ethernet。所以为了方便最好也能用这两种方式。另外,如果在使用ActiveSync时,是否可以利用RAPI,直接把设备端的程序拷贝到CE上,并让其运行。这样又省了手动拷贝的麻烦。

仔细琢磨了一阵,发现这些需求都可以实现。把各部分都实现完了以后联调,基本达到了预期的效果。但在CE分辨率较大时感觉有点迟钝。所以又想了优化的方法。基本上有以下三点,比较、分块、压缩。所谓比较,就是在CE截屏之后做一个备份,再次截屏时将其与备份进行比较,如果不一致再发送,否则就不用发给PC做更新。分块是可以和比较一起使用的,如果屏幕只是局部更新,那可以只发送更新的块,而其他块则不发送。压缩理论上是可以提高传输效率的。粗略的比较了一下,一张640*48016Bit的位图是600K,而压缩之后的JPG图片才几十K,差别还是相当可观的。这三种方法都能节省网络带宽,但也都会增加CPU的负担,实际效果也不好说。因为这个小工具主要是在局域网中使用,带宽不是问题,所以,暂时就不做优化的工作吧。

后来有一次,有人问起CE下的触摸屏校准在哪里,CE同步的连接怎么建立。为了确保他能准确操作,便利用这个远程显示工具和屏幕录像专家录了一个视频,果然效果相当好。后来想想,还不如在这个小工具中集成录屏的功能,这样又免去了开屏幕录像专家的麻烦。于是,找了一个很方便用的从BMP保存为AVI的类,添加了录屏功能。当然由于没有压缩,所以录制的AVI文件很大,一分钟就几十兆!

自从有了这个小工具,演示WindowsCE下的程序就很从容了,并且还能录制WinCE下的操作步骤,省了很多口水。现在贴出来跟大家一起分享,也希望能解决你的麻烦。^_^

有关RMC工具的几点说明:

1.              由于它支持USB ActiveSync的连接方式,并能够自动拷贝文件到设备上运行,所以在没有LCD的情况下,你可以用你的电脑显示器作为设备的LCD显示。(这两天调试支持多分辨率的Eboot就用到这个功能,效果还是相当好的)

2.              在使用同步连接,并且希望能自动拷贝设备端程序时,请不要修改设备端程序RMCEC.exe的文件名,并将其和RMCPC.exe放在同一个目录下面。

其实,后来在网上也找到了几个功能类似的软件。其中一个是Windows Mobile power toys,用了一下,感觉好像比RMC快一点,但它不支持Ethernet的连接,只能用USB同步,而且还要手动拷贝文件到设备上去。另外一个是SOTI公司出的软件,看起来相当专业,曾经尝试着破解了5.0的试用版,不知道是破解坏了,还是破解得不彻底,用一会儿自己就关了。还是用自己的RMC吧,简单又方便。^_^

WinCE远程控制小工具的下载地址: http://files.cnblogs.com/we-hjb/CERHOST.rar

目录
相关文章
|
2月前
|
Windows
windows 电脑 连接蓝牙耳机没有麦克风
【8月更文挑战第31天】当Windows电脑连接蓝牙耳机后无法使用麦克风时,可尝试以下步骤解决:检查蓝牙设置,确保耳机正确连接并开启麦克风选项;检查音频设备设置,确认蓝牙耳机为默认播放和录制设备;更新蓝牙和音频驱动;确认耳机与系统的兼容性及正确设置。如问题未解,可重新配对耳机或联系客服。
2695 7
|
网络协议 物联网 Linux
嵌入式Linux系列第9篇:使用WIFI
嵌入式Linux系列第9篇:使用WIFI
|
Linux Android开发 iOS开发
三款 Mac 远程控制(远程桌面)工具
三款 Mac 远程控制(远程桌面)工具
3418 0
电脑无线网卡怎么安装驱动(台式机内置无线网卡怎么安装)
电脑无线网卡怎么安装驱动(台式机内置无线网卡怎么安装)
387 0
|
网络安全 数据安全/隐私保护
树莓派3B刷机及调试出通过网络连接
电脑中搜索Win32 Disk imager 这个工具,然后插上读卡器,找到对应的磁盘
144 0
树莓派3B刷机及调试出通过网络连接
Win系统 - 佳能打印机无线连接教程
Win系统 - 佳能打印机无线连接教程
155 0
|
Windows
Windows 技术篇-重装电脑系统后搜不到蓝牙设备问题,电脑连接蓝牙不成功原因及解决办法
Windows 技术篇-重装电脑系统后搜不到蓝牙设备问题,电脑连接蓝牙不成功原因及解决办法
2255 0
Windows 技术篇-重装电脑系统后搜不到蓝牙设备问题,电脑连接蓝牙不成功原因及解决办法
QuasarRAT-windows下远程控制工具
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396737 资源:https://github.com/quasar/QuasarRAT Quasar是一种用C#编码的快速轻量级远程管理工具。
3504 0