我做了个类似于凌波的远程屏幕监控软件.设计方案如下:
程序为C/S结构,客户端负责定时(采用Timer控件,interval为3秒)抓取该客户机的屏幕图象(采用API,每次抓取到的屏幕数据大概为125K),并将图象数据存入byte数组发送给服务器端,服务器端接受该数组内容,并还原成图象,显示在pictureBox中.
程序功能已实现,但存在一个很不爽的问题,客户端每三秒的时候,即执行Timer_Tick的时候,系统就会出现卡的现象,表现为:鼠标本来正在移动中,但每到Timer_Tick的执行时间就会突然停顿1下.............我自己的分析,最可能的原因可能是屏幕抓取的实现方法比较弱,使得抓屏时,出现屏幕暂时停顿的现象.不知哪位能有更优的实现方法.
另外一个原因,我想可能性不大,不过还是说出来请大家帮忙分析一下:会不会是每次抓取到的图片(125K)有点大?我在抓取到屏幕后没将它保存成图片文件而是放入了StreamMemory中,这会不会也导致卡呢?希望做过这方面程序的或对这方面比较有研究的朋友能帮帮忙,谢谢拉.
程序为C/S结构,客户端负责定时(采用Timer控件,interval为3秒)抓取该客户机的屏幕图象(采用API,每次抓取到的屏幕数据大概为125K),并将图象数据存入byte数组发送给服务器端,服务器端接受该数组内容,并还原成图象,显示在pictureBox中.
程序功能已实现,但存在一个很不爽的问题,客户端每三秒的时候,即执行Timer_Tick的时候,系统就会出现卡的现象,表现为:鼠标本来正在移动中,但每到Timer_Tick的执行时间就会突然停顿1下.............我自己的分析,最可能的原因可能是屏幕抓取的实现方法比较弱,使得抓屏时,出现屏幕暂时停顿的现象.不知哪位能有更优的实现方法.
另外一个原因,我想可能性不大,不过还是说出来请大家帮忙分析一下:会不会是每次抓取到的图片(125K)有点大?我在抓取到屏幕后没将它保存成图片文件而是放入了StreamMemory中,这会不会也导致卡呢?希望做过这方面程序的或对这方面比较有研究的朋友能帮帮忙,谢谢拉.
解决方案 »
- MVC删除 问题
- 关于C# Webservice调用动态库
- float的GetType().Name值
- 代码执行的问题。.NET
- 关于项目中提取功能模块的问题
- 求正则表达式,要求能同时验证固话和手机,急用!
- 问个困难点的问题:J#到底怎么读啊? JScript or JSharp?
- .Net中接口相互继承的问题
- 郁闷死了,求教高手:代码运行错误: System.NullReferenceException: 未将对象引用设置到对象的实例,如何解决?
- ripper,别忙走,说清楚点啊!
- 问两个界面显示的问题(工具栏,Tabpage)
- c#采用webBrowser来提交表单,关于表单中的eWebEditor或者IFRAME 的疑惑
1. 截屏的效率,最高效的方式是通过显存直接获取数据,你可以用Windows DDK做一个虚拟显卡驱动程序(DDK里都有Sample的),这样直接通过显卡来获取数据。2. 数据的传输,对于截获的数据你可以做压缩再传输来减少网络上传输量,甚至你还可以做比对,只传输和上次数据的差异部分,接收端在上次数据基础上Merge差异就可以了。但这个地方你要权衡,因为压缩和解压缩本身就要消耗更多的计算时间(这个也和具体的压缩算法有关),和你得到的传输所减少的时间相比是否值得。
我的程序对实时性要求倒不是太高,只要延时在3-5秒都可以接受,因为并不做控制,只做监测.那我先看看DDK的资料,如果能直接看懂,我就回来结帖,看不懂的话可能还要麻烦你啊,呵呵