使用了EasyX图像库,使用方法请参考:VC++ 制作一个简易的控制台时钟应用
简单的桌面截图代码:
////////////////////////////////////////////////////////////////////////// // 程序名称:实现屏幕桌面的简单截图 // 编译环境:Visual Studio,EasyX_20151015(beta) // 作 者:shuai.qiao@wellintech.com // 创建日期:2016-11-24 // 项目类型:Win32 Application ////////////////////////////////////////////////////////////////////////// // 头文件 #include <graphics.h> // 函数声明 void DesktopCapture(IMAGE *pimg); // 主函数 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { IMAGE img; // 定义IMAGE对象 DesktopCapture( &img ); // 调用抓取桌面图像的函数 initgraph(1440, 900); // 创建绘图窗口(根据实际屏幕调整) putimage(0, 0, &img); // 在窗口中显示 IMAGE 中保存的桌面图像 while(!(GetAsyncKeyState(VK_ESCAPE) & 0x8000)) // 按ESC键退出 Sleep(20); closegraph(); return 0; } // 抓取桌面图像到 *pimg 对象中 void DesktopCapture(IMAGE *pimg) { // 通过 Windows API 获取桌面的宽高 int scale = 1; // 缩放比例(1:全屏) int w = GetSystemMetrics(SM_CXSCREEN) / scale; int h = GetSystemMetrics(SM_CYSCREEN) / scale; Resize(pimg, w, h); HDC srcDC = GetDC(NULL); // 获取桌面 DC HDC dstDC = GetImageHDC(pimg); // 获取 IMAGE 对象的 DC BitBlt(dstDC, 0, 0, w, h, srcDC, 0, 0, SRCCOPY); // 在两个 DC 之间执行图像拷贝,将桌面抓图拷贝到 IMAGE 对象里面 }
运行效果: