#include<d3d9.h>
#include<iostream>
#pragma  comment(lib,"d3d9.lib")
using namespace std;
//截取全屏
void CaptureScreen(void *data)
{//1 创建directx3d对象static IDirect3D9 *d3d = nullptr;if (!d3d){d3d = Direct3DCreate9(D3D_SDK_VERSION);}if (!d3d)return;//2 创建显卡设备对象static IDirect3DDevice9 *device = nullptr;if (!device){D3DPRESENT_PARAMETERS pa;ZeroMemory(&pa,sizeof(D3DPRESENT_PARAMETERS));pa.Windowed = true;pa.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;pa.SwapEffect = D3DSWAPEFFECT_DISCARD;pa.hDeviceWindow = GetDesktopWindow();d3d->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, 0,D3DCREATE_HARDWARE_VERTEXPROCESSING, &pa, &device);if (!device)return;}int w = GetSystemMetrics(SM_CXSCREEN);int h = GetSystemMetrics(SM_CYSCREEN);//3 创建离屏表面static IDirect3DSurface9 *sur = nullptr;if (!sur){device->CreateOffscreenPlainSurface(w,h,D3DFMT_A8R8G8B8,//像素格式D3DPOOL_SCRATCH,//存储位置 &sur,0);}if (!sur)return;//4 截取屏幕device->GetFrontBufferData(0,sur);//5 取出数据D3DLOCKED_RECT rect;ZeroMemory(&rect, sizeof(rect));if (sur->LockRect(&rect, 0, 0) != S_OK){return;}memcpy(data, rect.pBits, w * h * 4);sur->UnlockRect();//解锁cout << ".";
}int main()
{FILE *fp = fopen("out.rgb", "wb");int size = 1920 * 1080 * 4;char *buffer = new char[size];for (int i = 0; i < 100; i++){CaptureScreen(buffer);fwrite(buffer,1,size,fp);Sleep(100);}return 0;
}

【开源项目】基于Directx屏幕录制相关推荐

  1. DoNet开源项目-基于jQuery EasyUI的后台管理系统

    本文转载于 石佳劼的博客,有问题请到原文咨询,原文连接. 博主在业余时间开发了一个简单的后台管理系统,其中用到了 jQuery EasyUI 框架,上次分享过系统布局,参考文章:jQuery Easy ...

  2. DoNet开源项目-基于Amaze UI的点餐系统

    本文转载于 石佳劼的博客,有问题请到原文咨询,原文连接. 点餐系统 帮朋友做的点餐系统,主要是为了让顾客在餐桌上,使用微信扫描二维码,就可以直接点菜,吃完使用微信付款. 系统演示地址,账户名和密码均为 ...

  3. 开源项目-基于Intel VT技术的Linux内核调试器

    本开源项目将硬件虚拟化技术应用在内核调试器上,使内核调试器成为VMM,将操作系统置于虚拟机中运行,即操作系统成为GuestOS,以这样的一种形式进行调试,最主要的好处就是调试器对操作系统完全透明.如下 ...

  4. Web 自动化解决方案 [开源项目] 基于 Selenium 的 Web 自动化测试框架完美版

    欢迎查阅Selenium(Web自动化测试框架体系) Selenium ) Selenium是一个用于Web应用程序的自动化测试工具,直接运行在浏览器中,就像真正的用户在操作一样• 支持的浏览器包括I ...

  5. 开源项目-基于小熊派STM32红外热成像仪

    点击上方"嵌入式应用研究院",选择"置顶/星标公众号" 干货福利,第一时间送达! 来源 | 嵌入式应用研究院 整理&排版 | 嵌入式应用研究院 中秋假期 ...

  6. TestCaseManageSystem 自动化解决方案 [开源项目] 基于 AgileTC 的测试用例自动化框架完美版

    欢迎查阅TestCaseManageSystem(测试用例管理系统) AgileTC  TestCaseManageSystem是一套敏捷的测试用例管理平台,支持测试用例管理.执行计划管理.进度计算. ...

  7. 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅消费

    背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...

  8. App 自动化解决方案 [开源项目] 基于 Appium 的 UI 自动化测试框架完美版

    欢迎查阅Appium(Android自动化测试框架体系) Appium Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的,可用于IOS和Android以 ...

  9. [开源项目]基于FPGA的视频图像拼接融合

    基于FPGA的视频图像拼接融合 本项目简单来说,就是实时生成视频全景图,该架构经过优化,可以实时视频输出. 算法 下图说明了描述算法每个步骤的系统框图 该系统大致可以分为三个子系统: 预处理 基于 S ...

最新文章

  1. 【怎样写代码】实现对象的复用 -- 享元模式(三):享元模式
  2. mysql datetime 对于hbm_MySQL库表设计小技巧
  3. 怎么解决eclipse报PermGen space异常的问题
  4. 用java写的常见排序
  5. 转:巧用搜狗输入法输入英文单词
  6. hadoop namenode启动不了_集群版hadoop安装,写给大忙人看的
  7. LSGANs : Least Squares GAN(最小二乘GAN)--解决标准GAN生成的图片质量不高以及训练过程不稳定问题
  8. confluence启动不起来_“一键启动”只能点火?还有这5个“隐藏”功能,你都知道吗?...
  9. Excel常见问题总结
  10. HDU2594 Simpsons’ Hidden Talents 前缀与后缀转化成用s1去匹配s2
  11. LM2596S DC-DC可调降压模块
  12. keil uvision4 汉化破解版v4.12
  13. java毕业设计小小银动漫网站源码+lw文档+mybatis+系统+mysql数据库+调试
  14. 三菱PLC功能指令详解
  15. P6207 [USACO06OCT] Cows on Skates G
  16. [转载]班主任带着学生打副本 每周学习成绩就是DKP(这篇太雷人了,转载保持)...
  17. RSAT(Regulatory Sequence Analysis Tools)详解
  18. AirTest Poco定位 和启动方式
  19. linux的一页是多大
  20. TI芯片TMS320DM642开发

热门文章

  1. 余数运算符在Java中用于Doubles
  2. java接口版本控制_为什么要在Java中控制类和接口的可见性
  3. Java 8之前和之后的Lambda表达式
  4. 我可以/应该在事务上下文中使用并行流吗?
  5. java servlet_Java Servlet的前100个问题
  6. jms spring_JMS和Spring:有时很重要的小事情
  7. 使用Okta的单点登录保护您的Vert.x服务器
  8. camel.js_Camel 2.11 –具有URL重写功能的HTTP代理路由
  9. JavaOne 2016 Essentials:7个您不容错过的事件和会话
  10. 状态模式 处理订单状态_将状态机模式实现为流处理器