当前位置:首页 > 芯闻号 > 充电吧
[导读]一、功能介绍:分为两个软件,一个为【主机】,一个为【远程终端】。【远程终端】通过鼠标键盘可以控制【主机】程序;【主机】将界面传送到【远程终端】显示。二、设计介绍:① 【主机】端的界面位图传输功能使用的

一、功能介绍:

分为两个软件,一个为【主机】,一个为【远程终端】。【远程终端】通过鼠标键盘可以控制【主机】程序;【主机】将界面传送到【远程终端】显示。

二、设计介绍:

① 【主机】端的界面位图传输功能使用的是《Visual C++C6.0技术内幕第五版》源码ex34a的Blocksock,这个TCP套接字类非常好用,因为带了“超时取消”功能,建议在工程中多多使用这样的类;

② 【主机】端的桌面位图捕获,见CopyBitmap、ToMemory两个函数,分为实现了获取桌面HBITMAP和将这个HBITMAP完整的按bitmap格式保存到内存中。ToMemory的第三个参数为像素颜色,可选择32、24、16、8,自己试一试,会占用不同的内存容量,建议取8,这样一幅800×600的位图不压缩时占用480K字节多;

③ 【主机】端的位图压缩,采用了开源项目miniLZO,这个开源压缩项目非常好用。经验证,一般界面下的位图,压缩后压缩比可以达到90%而且速度超快。这些比例数字都在程序中显示;

④ 鼠标键盘控制信息采用了低级钩子的方法获取,注意,低级钩子它们并不需要单独写DLL。这一部分参见http://blog.csdn.net/dijkstar/article/details/9007167(VC6捕获鼠标事件(移动、单击等)的一些总结(MFC消息、DriectInput、钩子)),说明了为什么要使用低级钩子来换取;

⑤ 鼠标键盘的控制信息传输采用了UDP,在Lan.cpp中实现;

⑥ 为了提高程序的健壮性,使用毫秒级的多媒体测时函数,测量发送、接收花费的时间,做到心中有数;

⑦ 【远程终端】把收到的压缩位图,解压后,使用函数GetHBmp得到HBIMAP,并使用一个位图控件做显示。


使用时,先将每个程序的IP地址设一下(每个程序有两处IP需要设,IP指的是都是对方的IP地址),先运行【远程终端】,再运行【主机】程序。




本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭