cgnine 2011-12-07
Java开发的屏幕监控案例源代码:http://www.blackswansoft.com/lanxiangjian/article/20110111144508390.html
屏幕监视设计思想一(理论型--初步设计):
1.用Java中自带的截屏方法进行截屏,然后生成图片,保存在本地(比如C://temp//1.jpg)主机上(被监视端)
2.用socket将本地的图片文件传送到指定的电脑上(监视端),并且保存在该电脑上(比如C://temp//1.jpg)
3.用Java的swing写出一个显示图片的窗体,在监视端的电脑上运行并且将传送过来的图片(比如C://temp//1.jpg)显示出来。
以上三个步骤是最原始的屏幕监视设计思路,然后我们再将以上三个步骤循环的有序执行,
监视端显示图片的窗体再不停的刷新,我们就可以看到了被视端电脑屏幕的实时变化了,从而达到监视的效果。
优点:
1.设计起来比较简单,并且比较容易理解,比较适合初级程序员设计。
缺点:
1.在磁盘中产生了大量的图片文件,该文件很快就变成了垃圾文件,不适合应用到现实中。
2.如果被监视端的电脑处于静止状态(键鼠空闲),该循环仍在执行,性能上会有很大的浪费
3.需要很好的网速支持,为了达到比较清晰的效果,循环频率应该比较高些(比如每秒50次),只能在局域网中使用。
屏幕监视设计思想二(优化型--利用内存):
1.用Java中自带的截屏方法进行截屏,然后将截取的屏幕图片对象保存到一个图片对象里面(内存)
2.用socket将该图片对象传送到指定的电脑上(监视端)
3.用Java的swing写出一个显示图片的窗体,在监控端的电脑上运行并且将该图片对象显示出来。
优点:
1.设计起来稍有难度,比较适合对socket有一定了解的程序员设计。
2.没有生成图片的这个过程了,避免垃圾文件的产生。
缺点:
2.如果被监视端的电脑处于静止状态(键鼠空闲),该循环仍在执行,性能上会有很大的浪费
1.需要很好的网速支持,为了达到比较清晰的效果,循环频率应该比较高些(比如每秒50次),只能在局域网中使用。
屏幕监视设计思想三(高级型--运动检测):
1.首先对被视端电脑的鼠标和键盘添加上监听。
2.运动分析:
1.当发现鼠标移动时(从开始移动到停止移动)以一定的循环次数(比如50次)执行设计思想二中的流程。
2.当发现鼠标单击时(从右键或左键按下到起来)以一定的循环次数(比如50次)执行设计思想二中的流程。
3.当发现鼠标拖动时(从开始移动到停止移动)以一定的循环次数(比如50次)执行设计思想二中的流程。
4.当发现键盘点击时(从开始按下到起来)以一定的循环次数(比如50次)执行设计思想二中的流程。
优点:
1.设计起来比较难度,而且最大的难度是Java自身不支持后台监听(仅能对鼠标做一定的监听,但并不能实现全面监听),
所以要借助与JNI(Java调用C语言,用C语言写出后台监听),比较适合对高级程序员设计。
2.没有生成图片的这个过程了,避免垃圾文件的产生。
3.当被监视端的电脑处于静止状态(键鼠空闲)时,监视过程停止,在性能上会有很大的提高。
缺点:
1.需要很好的网速支持,为了达到比较清晰的效果,循环频率应该比较高些(比如每秒50次),只能在局域网中使用。
以上三种设计思想是我们想到并且总结出来的。或许并不是很好,仅供参考,如有比较好的设计方案多谢推荐。
我们在黑天鹅远控中使用的是第二种设计思想。
其实我一直还是很佩服"凌波多媒体教学"软件的设计,该软件可以将一台电脑的屏幕图像同时显示到几十台电脑上,而且也并不是很卡。
不知他们的屏幕监视设计原理是什么。
当屏幕监视设计出来之后,屏幕监控就很简单了。需要在监控端看到被控端屏幕的基础上,
再添加上将监控端的鼠标和键盘的操作传送到被控端,并且执行就可以了。
Java开发的屏幕监控案例源代码:http://www.blackswansoft.com/lanxiangjian/article/20110111144508390