屏幕捕捉技术第一步就是抓取屏幕的桌面

虽然print screen键可以,但是在实际中就有点不适用了

下面的代码可以拷贝到一个函数里面,执行就可以生成一个获取屏幕的bmp文件了

 //获取桌面窗口的CDCCDC *pdeskdc = GetDesktopWindow()->GetDC();  CRect re;//获取窗口的大小GetDesktopWindow()->GetClientRect(&re);CBitmap bmp;bmp.CreateCompatibleBitmap(pdeskdc , re.Width() , re.Height());//创建一个兼容的内存画板CDC memorydc;memorydc.CreateCompatibleDC(pdeskdc);//选中画笔CBitmap *pold = memorydc.SelectObject(&bmp);//绘制图像memorydc.BitBlt(0,0,re.Width() ,re.Height(), pdeskdc , 0 ,0 ,SRCCOPY) ;//获取鼠标位置,然后添加鼠标图像CPoint po;GetCursorPos(&po);HICON hinco = (HICON)GetCursor();memorydc.DrawIcon(po.x-10 , po.y - 10 , hinco);//选中原来的画笔memorydc.SelectObject(pold);BITMAP bit;bmp.GetBitmap(&bit);
//  DWORD size = bit.bmWidth * bit.bmHeight ;//定义 图像大小(单位:byte)DWORD size = bit.bmWidthBytes * bit.bmHeight ;LPSTR lpdata = (LPSTR)GlobalAlloc(GPTR , size) ;//后面是创建一个bmp文件的必须文件头,想要了解可以参考msdnBITMAPINFOHEADER pbitinfo;pbitinfo.biBitCount = 24 ; pbitinfo.biClrImportant = 0;pbitinfo.biCompression = BI_RGB ;pbitinfo.biHeight = bit.bmHeight ; pbitinfo.biPlanes = 1 ;pbitinfo.biSize = sizeof(BITMAPINFOHEADER);pbitinfo.biSizeImage =size;pbitinfo.biWidth = bit.bmWidth;pbitinfo.biXPelsPerMeter = 0;pbitinfo.biYPelsPerMeter = 0 ;GetDIBits(pdeskdc->m_hDC , bmp , 0 , pbitinfo.biHeight , lpdata , (BITMAPINFO*)&pbitinfo,DIB_RGB_COLORS);BITMAPFILEHEADER bfh;bfh.bfReserved1 = bfh.bfReserved2 = 0 ;bfh.bfType = ((WORD)('M'<< 8)|'B');bfh.bfSize = 54 + size ; bfh.bfOffBits = 54 ;//写入文件CFile file;if ( file.Open("1.bmp" , CFile::modeCreate|CFile::modeWrite) ){file.WriteHuge( &bfh , sizeof(BITMAPFILEHEADER) );file.WriteHuge(&pbitinfo , sizeof(BITMAPINFOHEADER));file.WriteHuge(lpdata , size);file.Close();}GlobalFree(lpdata);

c++ 截取屏幕图片并保存相关推荐

  1. 如何截取屏幕图片并压缩保存

    截取屏幕图片,可以监控电脑的运行.压缩进行保存可以节省流量和内存,达到快速上传的目的. import com.sun.image.codec.jpeg.JPEGCodec; import com.su ...

  2. C# 模拟PrintScreen 和 Alt+PrintScreen截取屏幕图片

    C# 模拟PrintScreen 和 Alt+PrintScreen截取屏幕图片 keybd_event API 函数功能:该函数合成一次击键事件.系统可使用这种合成的击键事件来产生WM_KEYUP或 ...

  3. 截取计算机桌面图,电脑如何截屏 怎样截取屏幕图片

    您可能感兴趣的话题: 电脑如何截屏 核心提示:今天向大家介绍一些实用的Win7截图技巧,在你需要别人协助或需要发屏幕图片给别人的时候,非常管用的截图方法,一共三种,下面慢慢说来. 今天向大家介绍一些实 ...

  4. 截取屏幕指定区域保存为BMP文件

    HBITMAP CopyScreenToBitmap(LPRECT lpRect) { //屏幕和内存设备描述表 HDC hSrcDC, hMemDC; //位图句柄 HBITMAP hBitmap, ...

  5. 【Flutter 问题系列第 22 篇】在 Flutter 中如何截取屏幕并显示到页面中,以及如何将截图保存到相册

    这是[Flutter 问题系列第 22 篇],如果觉得有用的话,欢迎关注专栏. 关于在 Flutter 中如何截取屏幕,以及如何将截图保存到相册的文章少之又少,即使有,也是错误一大片,有的甚至运行后都 ...

  6. python测试脚本截图_Python+selenium实现截图图片并保存截取的图片

    这篇文章介绍如何利用Selenium的方法进行截图,在测试过程中,是有必要截图,特别是遇到错误的时候进行截图.在selenium for Python中主要有三个截图方法,我们挑选其中最常用的一种. ...

  7. java截取屏幕指定范围内的图片并识别图片内的文字

    目录 目标 概述 代码 根据坐标截图 截图效果 识别图片上的文字 相关依赖与工具类 识别效果 目标 根据给定的坐标,在屏幕上截图并保存到指定的目录下: 识别图片中的文字. 概述 利用JDK自带的方法实 ...

  8. 2021-06-20 截取屏幕并转png格式保存到本地

    截取屏幕并转png格式保存到本地 /// <summary>/// 读取屏幕像素,可以截取到UI/// </summary>/// <returns></re ...

  9. Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹

    Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹 目录 实现步骤和结果 核心代码 实现步骤和结果 ...

最新文章

  1. 图解|什么是缺页错误Page Fault
  2. 从Ruby调用Shell命令
  3. 遇到个鬼,在WIN08的DELL R710上安装CENTOS 63,无法格式化以前的硬盘分区,安装无法进行下去。...
  4. python如何记录运行时间_Python如何测量脚本运行时间
  5. TensorFlow 中 identity 函数理解
  6. 一双木棋chess[九省联考2018]
  7. SQL Server群集共享存储迁移
  8. 【王道考研计算机网络】—OSI参考模型
  9. 朴素贝叶斯python实现预测_Python朴素贝叶斯预测.PDF
  10. 天玑9200领跑背后,高端芯片掀起蝴蝶效应
  11. Java小游戏象棋开发1-界面设计
  12. 使用docker安装mysql8及mysql5.7
  13. css 属性 calc 的使用
  14. 后台面试常问问题博客总结
  15. 华为p20Pro投屏电脑 手机投屏电脑教程
  16. Java学习基础(二)
  17. Mac OS安装brew出现错误的解决办法
  18. 移动硬盘只能识别一个分区,另一个变为RAW的解决办法
  19. 「深度好文」TCP BBR拥塞控制算法深度解析
  20. kali linux命令调整屏幕亮度

热门文章

  1. 将图片序列帧合成mp4_超级详细!如何将B站缓存m4s文件无损转换为mp4格式
  2. python离散变量_python – 当涉及离散变量时,pymc3与pymc2的困难
  3. android xml图片旋转,如何在Android中进行平滑的图像旋转?
  4. tk域名管理后台_不知道“域名怎么解析”的伙伴,可以来看看
  5. opencv3.4.1 + vs 2017 + cmake 3.11.3 + win10 配置. 终章
  6. 安卓中的@Nullable和NonNull(NotNull) 等 注释
  7. 同步、异步、阻塞、非阻塞 简析
  8. 你的php网页乱码了吗
  9. Linux-环境变量的设置和查看
  10. 防御暴力破解SSH攻击