项目需要开发一个监控程序,主要是监控其它电脑的操作情况。

  先说下原理吧,首先我们列出做远程监控的基本步骤,远端电脑的ip,捕捉屏幕的方法,传输,接收并显示。

  突然不知道怎么写下去了.......

  程序经过2到3个版本的更新,程序已在性能上有很大的改善,说下难点吧,捕捉屏幕并不困难,但是对捕捉到的屏幕做处理就比较费劲了,有同学可能会说,截了屏幕一发不就完事了吗?我想说我做demo的时候也是这样的,后来我发现,监控多个电脑的时候就不给力了,网络下载带宽要爆棚,所以是不够的,下面我来说说我是怎么解决这个问题的,原理如下:先规划下你要获取的屏幕,屏幕本身是个矩形,现在我们可以将屏幕规划下,笔记本嘛,1024*768的话矩形比例可做宽高比为8比6,大屏电脑1920*1080的可以设计16比9,将整个屏幕划分为若干个小矩形,规划完矩形后,我们可以将第一张截图划分,将划入每一个小矩形的图像做内存上的锁定,接着抓取第二张屏幕图像,和以上的步骤一样,吧一整张图片分割后一第一张图片分割后的锁定内存做对比,内存结构对比有底层API函数支持,如果相同位置的小矩形内存结构在某个范围内不一致可认定为图片不相同,记录该小矩形的编号,发送时只发送此编号的小矩形,流量问题就得到了极大的优化(因为我们操作中很少会一直不停的切换界面,所以大部分时间界面是变化不大的,发送整张截图,实在太耗费资源了)。

 先写这些吧,天太冷了!后面接着写。

c#自制视屏监控的更多相关文章

  1. 【学习笔记】兄弟连LINUX视屏教程(沈超 李明)

    发现自己的linux水平楞个瓜皮,找个视屏教程学习一哈 1 linux系统简介 1.1 UNIX和Linux发展史 unix发展历史:1969年,美国贝尔实验室的肯.汤普森开发出unix系统,1971 ...

  2. wndows程序设计之书籍知识与代码摘录-获取视屏显示器像素等参数GetsystemMetrics

    以下的代码段用于获取视屏显示器的高度宽度,以像素为单位. int sxScreen, cyScreen; cxScreen = GetSystemMetrics (SM_CXSCREEN); cySc ...

  3. Android中使用SurfaceView+MediaPlayer+自定义的MediaController实现自定义的视屏播放器

    效果图如下: (PS本来是要给大家穿gif动态图的,无奈太大了,没法上传) 功能实现:暂停,播放,快进,快退,全屏,退出全屏,等基本功能 实现的思路: 在主布局中放置一个SurfaceView,在Su ...

  4. 读取视屏文件,保存帧图片为ppm文件

    ffmpeg跟sdl的学习过程:一.版本信息:ffmpeg-3.0.2.tar.bz2SDL2-2.0.4.tar.gz二.编译过程:1.ffmgeg的编译:./configure --enable- ...

  5. opencv视屏流嵌入wxpython框架

    前几篇博客分享搭建人脸识别与情绪判断的环境和源码,但是没有UI,界面很难看,一打开就是opencv弹出的一个视屏框.处女座的我看着非常难受,于是决定做一个UI,稍微规矩好看一点,再怎么说,这样的话也算 ...

  6. 加入ffmpeg播放视屏

    下面的字反了..,另外没声音 2018-4-28 前段时间已经做的差不多了,音频的pack取出来用openAL播放,并实现了视屏同步播放,并且支持unity 现在的问题就是支持大分辨率视屏播放的问题, ...

  7. Android视屏播放兼容性问题分享

    最近产品提了一个紧急需求:webview加载的URL,需要支持视频播放. 为了快速完成需求,功能实现上直接使用系统自带播放器播放视频.由于是自带播放器,需要进行兼容性测试,过程发现了不少问题,这里分享 ...

  8. PS学习之制作音乐视屏

    素材: 新建画布 插入图片素材 调整和画布一样大小 喜欢彩色的 可以加照片滤镜 喜欢黑白的可以加黑白滤镜 也可以添加自己喜欢的文字 在窗口中选择时间轴 创建视屏时间轴 图中标记得就是每秒能播放30张 ...

  9. MPEG-1视屏压缩标准

    MPEG-1标准包括5个部分 图像的四种类型: I帧: B帧:双向帧间预测 P帧: D帧:只含有16分量,为快放设计 压缩前需要帧重排 视屏码流结构 I帧压缩 p帧压缩 b帧压缩 其他压缩算法 MPE ...

随机推荐

  1. 无索引状态下比较DataTable的几种过滤方法效率

    先构造一个DataTable: public DataTable GetDataTable() { DataTable dtTmp = new DataTable(); dtTmp.Columns.A ...

  2. SQL Server的高级知识

    DataSet的内容介绍,两种单例模式(并发量的考虑),SQL高级中的case语句.连接操作.子查询.派生表 -------------------------------- 1.Case的用法 使用 ...

  3. thinkphp关闭调试模式(APP_DEBUG => false),导致程序出错

    thinkphp关闭调试模式(APP_DEBUG => false),导致程序出错,开启调试模式,不报错,怎么解决? 查看Logs日志记录: [ --29T09::+: ] 113.108.11 ...

  4. 前端网站helper

    聚合api 一.颜色类网站http://colorhunt.co 这个网站给我们提供了很多的配色方案,我们直接使用就OK了.使用方法也很简单,鼠标移动到对应的颜色上,我们就可以看到颜色的十六进制码,复 ...

  5. css相对定位+浮动实现元素位置互换

    1.设置元素透明度 opacity:0.5; // w3c filter:alpha(opacity=50); //IE 2 position:relative; float:left; 一起使用的效 ...

  6. mysql中的模糊查询

    转载自:http://www.letuknowit.com/archives/90/ MySQL中实现模糊查询有2种方式:一是用LIKE/NOT LIKE,二是用REGEXP/NOT REGEXP(或 ...

  7. Python基础篇【第3篇】: Python正则表达式

    正则表达式 正则表达式并不是Python的一部分.正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.正则表达式是一个特殊的 ...

  8. (Collection)347. Top K Frequent Elements

    Given a non-empty array of integers, return the k most frequent elements. For example,Given [1,1,1,2 ...

  9. PHP Warning: PHP Startup: in Unknown on line 0

    Windows平台启动php后,出现PHP Warning:  PHP Startup:  in Unknown on line 0解决方案:这个问题是由于php.ini中没有开启(去掉注释符号)ph ...

  10. oracle 邮件发送

    CREATE OR REPLACE PROCEDURE PRC_sendmail(p_receiver VARCHAR2, -- 邮件接收人                               ...