公司让偶开发一个远程控制软件也就是在客户端控制服务器的运行状态及能够进行远程调试!本人现在的方案是:建立TCP连接,在服务器端截屏,通过SOCKET发送到客户端.客户端的操作通过SOCKET发过去
在服务器端进行模拟还原,达到控制的目的.这样做有一个弊端就是,截屏图片太大,传输太慢.不知还有没有别的方式?请大家多指教!
在服务器端进行模拟还原,达到控制的目的.这样做有一个弊端就是,截屏图片太大,传输太慢.不知还有没有别的方式?请大家多指教!
这样首先要在客户端向所有窗口发送WM_PAINT消息强迫所有窗口全部重画自己,而客户端则针对那些窗口创建一些新的窗口,然后在其上调用那些发送过来的GDI函数画图。
比如,在客户端并没有服务器端的程序,那怎样知道服务器端程序的运行状态,除非服务器端和客户端完全是一样的.如果是这样,那么软件的使用受限制太大了.
所有的屏幕显示,包括窗口元素的显示,都是调用GDI画出来的。你只要在客户端照着一笔一划画就是了。
通过GDI钩子的方法来做的话,可能工作量太大。并且有很多问题。 通过DDK接管屏幕输出呢,效果可能较好,但要求懂DDK编程。 VNC也是一种和楼主你说的差不多的软件,好像在他的主页上有较老版本的 源码下载,可以去看下。
2.显示TXT文件:最终将会调用DrawText之类的函数显示的,那时候传过去。
转化成JEPG的方式,占客户资源太大,如果客户分辨率高的化,CPU的占用率太高.
如果为1024*768,它要分配一次内存,对拷贝屏幕后的数据分析三次,如果你用一个函数去做,很慢,
我后来解决的办法是,分屏幕为N个区域,N取决于分辨率.你自己决定.
每次要拷贝的时候,先用拷贝成单色的,然后对照上次的数据,如果区域数据改变,则记录此区域
这样数据量就减小,当然最坏的情况还是要整屏幕发送.
图象直接村成BMP格式文件,然后发送的时候用LZIB压缩,压缩的时候也不是整个文件压缩,只是
分成200K一次压缩,这样占用CPU资源上,然后在服务端解包,然后画到内存位图,只有显示的时候会是一块块更新.
因为我做的是木马,所以考虑的是不让对方发现CPU资源占用太大而这样做.
可以做为参考,HEHE.