阅读:2057回复:12
求助netmeetng中的动态屏幕跟踪软件原理是什么
在windows操作系统中有个netmeeting网络系统软件,它有一个能将网上的另一台计算机的屏幕实时跟踪,不知该应用软件的原理是什么?
|
|
最新喜欢:![]()
|
沙发#
发布于:2003-02-26 20:55
看看VCN吧
|
|
板凳#
发布于:2003-02-28 00:00
这有何难?
截取屏幕的画面是一件很容易的事情,只要取得桌面的DC就可以了,抓到桌面后通过网络传输出去,在另一端的软件里显示出来就可以。一般桌面的画面数据量会比较大,所以你可能需要把抓到的图象做压缩,然后再进行传输。如果压缩速度和网络传输速度不是很慢的话,做到实时是没有问题的。 |
|
地板#
发布于:2003-02-28 10:25
这有何难? 怎样做到共享桌面?要能控制另外一个桌面上的程序可能就不那么容易了! |
|
|
地下室#
发布于:2003-02-28 11:21
在windows操作系统中有个netmeeting网络系统软件,它有一个能将网上的另一台计算机的屏幕实时跟踪,不知该应用软件的原理是什么? 你在做什么项目?远程控制吗? 如果这样看看pcAnywhere吧 |
|
|
5楼#
发布于:2003-02-28 11:50
没你说的这么简单,首先不考虑共享桌面的问题。先说实时性问题。
服务器端抓取到屏幕后,然后在内存中转换成JPG格式流,这样就可以不需要另外再压缩了,然后把数据发给客户端,客户端在一个窗口上用PICTURE控件显示出来(也可以直接画),这样绝对会有闪烁。而且在INTERNET上实时性肯定有影响,我在LAN里按照这个原理写过,结果闪烁得很厉害! 我现在考虑的方法是服务器端将抓到的桌面分解成多个部分,然后在一定的时间间隔内将上一次抓下来的桌面和现在抓下来的桌面一部分一部分地比较,有变动的就发送给客户端,没变动的就不发送。 我刚刚看了点VNC的源码,他好像是采用像素点比较的方法。 至于共享桌面比较简单,在客户端捕获键盘事件鼠标事件,然后把这些事件发送到服务器端,服务器端在重新模拟这些事件就OK了 这有何难? |
|
6楼#
发布于:2003-02-28 13:18
可以参考一下linux下rdp的源码,原理是截获所有的GUI api然后发到客户端在画出来,效率当然会高很多
|
|
7楼#
发布于:2003-03-03 10:01
这里给大家说说几种远程监控软件的原理:
VNC:VNC是通过一DLL给Windows安装消息钩子,捕获窗口的变化,然后将变化区域发给主应用程序,主应用程序合并更新区矩形,并根据合并后的结果利用GDI抓屏函数(当然也有通过DirectX的版本),抓取屏幕数据,然后进行压缩(包括三种方法,最有效的是游程编码),最后将压缩后的数据发送到客户端,由客户端程序解码,并显示。 NetMeeting:关于netmeeting, 检查设备管理器,你会发现Windows有一个远程桌面共享的虚拟设备,启动Netmeeting后,该虚拟设备镜像当前显存中的内容,然后将变化压缩(一般是位平面算法),并发送到客户端。 Linux的RDP:Mircosoft有一个设备叫Smart Display,该设备(客户端Os是 Wind CE)利用的就是RDP(Remote Desktop Proto)协议,Linux的RDP即是通过该协议与 Windows端 RDP sever进行通讯的。现在的Windows RDP 2.0(必须在win2k, wxp, win98不支持)可以同时带两个用户(也许更多)。 原理吗,我也说不清楚,有点象BeTwin的多用户,只是另一块显示设备是通过网络虚拟的。 鼠标,键盘就象楼上的仁兄说的一样! |
|
8楼#
发布于:2003-03-03 21:43
看了各位兄弟的发言收获不小。
何不一起搞一个试试? |
|
9楼#
发布于:2003-03-03 22:30
这个程序如果能够将自己隐藏的话,就是一个木马拉!
总的来说就是只在一开始是发送全屏的数据,以后就只发送发生变化的区域。一般的定时器是不行的,因为它的时间间隔太大了。关键还是要好的压缩算法。 至于控制的话,就是你在网络协议中的事啦。 |
|
|
10楼#
发布于:2003-03-04 10:18
sun_ck说得很有道理!
在windows下你就用mirror吧! 而且2000ddk下有这个例子! |
|
11楼#
发布于:2003-03-04 12:59
楼上老兄说的不错,Mirror这个东东确实不错。
但是要注意几点: 1、Mircosoft 给的Mirror 不能直接给出数据,要进行改造。 2、Mircosoft 给的Mirror处理真彩色有一处小小BUG。 3、数据的获取可以有两种渠道,一是在用户态利用GDI从Mirror拿数据(注意Bitblt的参数),二是直接在内核态将数据发给NIDS 4、选择压缩算法要慎重,尽量要好一点的。 |
|
12楼#
发布于:2003-08-18 21:21
MIRROR如何得到屏幕的数据
|
|
|