WEB开发网
开发学院软件开发VC 定时显示远程计算机的桌面 阅读

定时显示远程计算机的桌面

 2010-09-04 20:48:07 来源:WEB开发网   
核心提示:一、前言看了大家写了这么多的代码,自己也想贡献一点,定时显示远程计算机的桌面,呵呵,很多的时候我们在qq的时候都想看看和自己聊天的对方在和哪些人聊天,服务端的关键是截取屏幕 ,并且发送出去,有什么办法没有?直接一点的就是截获对方的桌面,我看了一下一般的截获的桌面都没有及时的显示和更新

一、前言

看了大家写了这么多的代码,自己也想贡献一点。呵呵,很多的时候我们在qq的时候都想看看和自己聊天的对方在和哪些人聊天,有什么办法没有?直接一点的就是截获对方的桌面。我看了一下一般的截获的桌面都没有及时的显示和更新,而且每次显示的时候如果从磁盘中读取的话速度未免太慢了一点,可不可以直接将bitmap的数据直接传到网络的终端显示呢?ok这个方法应该可以。闲话免说。开始正式进入我们的话题。

二、服务程序实现

首先要的是在对方的电脑上放入服务器程序:EmployerSever.exe。网络的传送自然少不了的,我采用的是mfc CSocket。控制端的程序是点击“开始服务”就可以接受网络的另一端的连接了。服务端的关键是截取屏幕 ,并且发送出去。如下所示:

void CEmployerSeverDlg::CatchScreen()
{
   // protect类型 只用于内部函数的调用,
   //截获屏幕位图信息和数据信息分别放在btm和lpdata
   CDC dc;
   dc.CreateDC("DISPLAY",NULL,NULL,NULL);
   CBitmap bm;
   int Width=GetSystemMetrics(SM_CXSCREEN);
   int Height=GetSystemMetrics(SM_CYSCREEN);
   bm.CreateCompatibleBitmap(&dc,Width,Height);
   CDC tdc;
   tdc.CreateCompatibleDC(&dc);
   CBitmap*pOld=tdc.SelectObject(&bm);
   tdc.BitBlt(0,0,Width,Height,&dc,0,0,SRCCOPY);
   tdc.SelectObject(pOld);

   bm.GetBitmap(&btm);
   size=btm.bmWidthBytes*btm.bmHeight;
   lpData=new char[size];
   /////////////////////////////////////////////
   BITMAPINFOHEADER bih;
   bih.biBitCount=btm.bmBitsPixel;
   bih.biClrImportant=0;
   bih.biClrUsed=0;
   bih.biCompression=0;
   bih.biHeight=btm.bmHeight;
   bih.biPlanes=1;
   bih.biSize=sizeof(BITMAPINFOHEADER);
   bih.biSizeImage=size;
   bih.biWidth=btm.bmWidth;
   bih.biXPelsPerMeter=0;
   bih.biYPelsPerMeter=0;
   ///////////////////////////////////
   GetDIBits(dc,bm,0,bih.biHeight,lpData,(BITMAPINFO*)&bih,DIB_RGB_COLORS);
}

1 2 3  下一页

Tags:定时 显示 远程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接