现在的位置: 首页 > 综合 > 正文

自己写远程控制软件之总览

2013年12月23日 ⁄ 综合 ⁄ 共 933字 ⁄ 字号 评论关闭

一直想自己做点什么事情,终于有时间可以写些的软件了。凭心而论,我爱这一行,不过由于各种原因,或多或少的会感受到自己的才能没有被用到,所以我以这样的方式实现我的软件梦。以下便是开发一个简易远程控制程序的历程。稍后我会把代码发布到 CSDN 上。好,进入正题。

很明显要实现一个远程控制程序必须有以下功能:
一、捕捉屏幕
       捕捉屏幕,也就是抓屏,一般有三种方式,分别是
       1. GDI 函数
       2. DirectX 方式
       3. Windows Media API
       我选择 GDI 函数,主要是原因是简单,网上到处是源码,以后有时间再做优化。

二、网络传输
       通信双方的交互如下,这就需要先定义好消息头,还要准备一些通信代码(偷笑我用 IOCP,小题大作了是吧?)

       服务器                                                客户端

       桌面图像   -----------------------------> 
                        <-----------------------------   控制指令

三、图像压缩
       对于以何种方式压缩图像有很多种选择,比如 H264, JPG, (什么你用 BMP? 我晕),这里我认为 JPG比较合适。理由是这样的,一般桌面大小是 1280X720(至少我是),如果使用 H264,服务器 CPU 将花费大量时间做这事,客户端 CPU 还要解码(当然 JPG 也需要),当然这也得看帧率等等(由于前面采用 GDI 抓屏,比较消耗资源,而且桌面一般不会有太大变动,所以我们可以降低抓屏的频率,比如降到 10帧每秒)。使用 Intel 的 ijl 库,ijl 库压缩的时候没有内存泄露,解压的时间长了就会内存泄露。

四、键鼠响应
       使用 mouse_event 和 keybd_event 在服务器实现点击标和盘的功能。

五、隐藏服务器界面
       你总不希望服务器界面占着屏幕的一部分吧。

六、侦测服务器

       使用 UDP 广播发现服务器仅仅在局域网内可使用,毕竟我不是写黑客软件,仅仅是用来自娱乐的。

代码放到了
程序可能有些小 BUG,不过,目的也是给人以参考的,主要功能都实现了。

抱歉!评论已关闭.