/////////////////////////////////////////////////////////
// 程序名称:实现桌面截图
// 编译环境:Visual C++ 6.0 / 2010,EasyX 20130117(beta)
// 作 者:yangw80 <yw80@qq.com>
// 最后修改:2013-1-29
// 项目类型:Win32 Application
//
#include <graphics.h>
// 抓取桌面图像到 *pimg 对象中
void CaptureDesktop(IMAGE *pimg)
{
// 通过 Windows API 获取桌面的宽高
//int w = GetSystemMetrics(SM_CXSCREEN) / 2;
//int h = GetSystemMetrics(SM_CYSCREEN) / 2;
int w = GetSystemMetrics(SM_CXSCREEN);
int h = GetSystemMetrics(SM_CYSCREEN);
// 调整 pimg 的大小
//Resize(pimg, w, h);
// 获取桌面 DC
HDC srcDC = GetDC(NULL);
// 获取 IMAGE 对象的 DC
HDC dstDC = GetImageHDC(pimg);
// 在两个 DC 之间执行图像拷贝,将桌面抓图拷贝到 IMAGE 对象里面
//BitBlt(dstDC, 0, 0, w, h, srcDC, 0, 0, SRCCOPY);
StretchBlt(dstDC,0,0,640,480,srcDC,0,0,w,h,SRCCOPY);
}
// 主函数
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
//修改如下
// 定义 IMAGE 对象
IMAGE img(640,480);
// 创建绘图窗口
initgraph(640, 480);
// 按 ESC 键退出
while(!(GetAsyncKeyState(VK_ESCAPE) & 0x8000))
{
// 调用抓取桌面图像的函数
CaptureDesktop(&img);
img.Resize(640,480);
// 在窗口中显示 IMAGE 中保存的桌面图像
putimage(0, 0, &img);
Sleep(20);
}
closegraph();
return 0;
}
这段代码是我在EasyX的官网上看到的。执行程序的源代码只能够将程序启动那一刻的图片画面显示在主窗口中,我对它进行了改动。目的是:实时显示桌面的画面。结果执行更改后的程序,出乎意料。如最上面的图片所示。求大神,指点迷津。