前一段时间写了一个可以远程监视对方屏幕的程序,拿来分享。关键代码在资源里http://download.csdn.net/user/sophisticated。
该系统采用服务器和客户端模式。
首先是服务器和客户端的连接,这一部分在(socket应用一)中已经详细说明了,不再详述。
接下来就是数据的发送和接收了,服务器负责采集屏幕信息,向客户端发送,客户端负责接收数据,将其显示在屏幕上。
服务器端:首先是屏幕信息的采集,调用系统API【GetDC】,参数传入桌面窗口的句柄,即【GetDesktopWindow】的返回值,得到屏幕的DC,为了将数据保存下来以便操作,在内存中创建一个兼容DC,调用函数【CreateCompatibleDC】,将上面得到的DC作为参数传入,得到兼容DC的句柄。其实如果不是要传输而是在本地窗口上显示屏幕的话,就不用创建兼容DC,而直接调用【StretchBlt】就可以显示桌面了。为了得到位图信息,还得创建一个兼容位图,这个位图是用来保存屏幕位图的信息的,存在于内存中,其实屏幕的显示就是一幅位图,这幅位图保存在屏幕窗口的DC中,我们要做的就是将这幅位图复制出来,放到我们创建的兼容DC,即内存DC中,然后发送出去。创建兼容位图要调用【CreateCompatibleBitmap】,传入参数依然为屏幕DC,得到兼容位图的句柄。为了使兼容DC和兼容位图联系起来,我们调用【SelectObject】将其选入兼容DC中,下来就是要复制屏幕DC中