【开源项目】基于Directx屏幕录制

#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;
}

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336136.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划

作者 | 光子俊来源 | CSDN博客出品 | CSDN(ID:CSDNnews)Git介绍Git是目前世界上最先进的分布式版本控制系统&#xff0c;可以为我们管理项目、构建工程、多人协作提供便利&#xff0c;作为一个爱技术的你可以是必须要掌握的呀&#xff01;&#xff01;&#xff01;Git安装(inst…

Win7system登录打开计算机,Windows7系统system文件丢失导致开机黑屏如何解决

最近有windows7系统用户在开机的时候遇到了黑屏的问题&#xff0c;却提示“因以下文件的损坏或丢失&#xff0c;Windows无法启动windows/system32/config/system”的错误&#xff0c;导致无法开机&#xff0c;针对Windows7系统system文件丢失导致开机黑屏问题&#xff0c;本文就…

javafx阴影_JavaFX技巧来节省内存! 属性和可观察对象的阴影场

javafx阴影在 JavaFX的世界中&#xff0c; Properties API允许UI开发人员将值绑定到UI控件。 这种功能出奇的简单&#xff0c;但是当对象模型经常使用属性时&#xff0c;应用程序可能会很快耗尽内存。 我通常会编写两个单独的对象&#xff0c;例如pojo类和表示模型对象。 此技术…

【开源项目】基于QT录制PCM音频实例详细

#include "QtAudio_input.h" #include <QtWidgets/QApplication> #include<QAudioInput> #include<iostream> using namespace std; int main(int argc, char *argv[]) {QAudioFormat fmt;fmt.setSampleRate(44100);//样本率fmt.setSampleSize(16)…

工业计算机改造报告,工业计算机实验报告..docx

实验一 A/D、D/A 转换实验一、实验目的1.了解温控系统的组成。2.了解NI 测量及自动化浏览器的使用并对数据采集卡进行设置。3.了解Dasylab 软件的各项功能&#xff0c;并会简单的应用。4.通过实验了解计算机是如何进行数据采集、控制的。二、实验设备微型计算机、NI USB 6008 数…

yum install -y 是什么意思_为什么你应该在docker 中使用gosu?

为什么要使用gosu&#xff1f;Docker容器中运行的进程&#xff0c;如果以root身份运行话会有安全隐患&#xff0c;该进程拥有容器内的全部权限&#xff0c;更可怕的是如果有数据卷映射到宿主机&#xff0c;那么通过该容器就能操作宿主机的文件夹了&#xff0c;一旦该容器的进程…

openshift_Openshift源中的高可用性Drools无状态服务

openshift嗨&#xff0c;大家好&#xff01; 在这篇博客文章中&#xff0c;我想举一个简单的示例&#xff0c;展示使用Openshift 3&#xff08;Docker和Kubernetes&#xff09;扩展我们的Drools Stateless服务有多么容易。 我将展示如何通过按需提供新实例来扩展我们的服务&…

【WebRTC---源码篇】(一)全局初始化

一&#xff0c;任何平台的客户端在使用WebRTC的API之前都需要进行一些初始化操作&#xff0c;主要是设置实验性功能开关&#xff0c;初始化SSL&#xff0c;当然也可以启用trace,设置日志输出等。 Windows和Linux端的初始化 rtc::WinsockInitializer winsock_init;rtc::Win32So…

ibm服务器芯片架构,IBM x366 服务器技术详解

背景资料IBM eServer x366 提供了突破性的 4 路性能&#xff0c;采用机架优化的 3U服务器设计&#xff0c;结合了源自大型机灵感的 eServer X3技术的高可用性&#xff0c;具有最新 64 位Intel Xeon MP 处理器带来的 64位性能&#xff0c;可创建面向商业企业应用程序、虚拟化及 …

python函数调用自身后果_python 写函数在一定条件下需要调用自身时的写法说明...

例如以下这个函数&#xff1a;state 1 def set_state(state): while state: set int(input(请输入9或5,显示"hello world"\n)) if set 9 or set 5: print(hello world) state int(input(输入1继续&#xff0c;输入0停止&#xff01;\n)) else: print(请输入要求…

python antlr_使用ANTLR在5分钟内用Java解析任何语言:例如Python

python antlr我喜欢出于多种目的处理代码&#xff0c;例如静态分析或自动重构。 对我来说&#xff0c;有趣的部分是推理从抽象语法树&#xff08;AST&#xff09;构建的模型。 为此&#xff0c;您需要一种从源文件中获取AST的方法。 可以使用ANTLR轻松完成此操作&#xff0c;并…

【WebRTC---源码篇】(二)PeerConnectionFactory

在初始化之后,使用PC之前需要先创建和初始化PeerConnectionFactory对象,因为PC的创建使用了工厂模式。实现在InitializePeerConnection()中实现,其中还调用了 PC的创建以及添加相关轨 //创建PC Factory,这个函数会在用户呼叫对方,或者收到对方呼叫信息时调用 bool Conducto…

服务器安装虚拟交换机,虚拟交换机配置如何操作?虚拟交换机配置步骤有哪些...

很多朋友在做虚拟交换机配置的时候&#xff0c;不知道如具体的操作方法&#xff0c;下面新网就给大家详细的介绍下虚拟交换机配置如何操作以及虚拟交换机配置步骤有哪些等问题&#xff0c;以供参考。虚拟交换机配置方法1.先安装驱动D:\Company\S5700S-28P-LI-AC\驱动\S5700系列…

rostcm6情感分析案例分析_卷积情感分析

这是一个面向小白(比如&#xff0c;本人)的关于情感分析的系列教程 [1]。老鸽子整理了“4 - Convolutional Sentiment Analysis.ipynb”中的内容。本文任务&#xff1a;使用卷积神经网络(CNN)来实现句子分类。简介CNN用于分析图像&#xff0c;包含一个或多个卷积层&#xff0c;…

java jigsaw_60秒内使用Java 9的Project Jigsaw的JavaFX HelloWorld

java jigsaw到目前为止&#xff0c;您可能已经听说过Java 9的新模块系统&#xff0c;即项目Jigsaw。 如果您不了解Java 9的新模块系统&#xff0c;则应该访问Mark Reinhold的论文“模块系统的状态” 。 另外&#xff0c;您应该在nipafx上查看 Nicolai Parlog的优秀博客&#xf…

C++ 11 深度学习(三)范围for、new内存动态分配、nullptr

1.范围for 作用&#xff1a;用于遍历一个序列&#xff0c;例&#xff1a; int v[]{ 1,2,3,4,5,6 };for (auto x : v)//数组v中每个元素&#xff0c;依次放入x中;cout << x << endl; 2.new和delete new和delete是C中的两个关键字&#xff0c;其中new 先执行mallo…

opencv python 多帧降噪算法_OpenCV-Python中用于视频跟踪的Meanshift和Camshift算法介绍...

学习目标在本章中&#xff0c;我们将学习用于跟踪视频中对象的Meanshift和Camshift算法。MeanshiftMeanshift背后的直觉很简单&#xff0c;假设你有点的集合。(它可以是像素分布&#xff0c;例如直方图反投影)。你会得到一个小窗口(可能是一个圆形)&#xff0c;并且必须将该窗口…

【视频码率==文件传输大小等通用计算】

1字节&#xff08;Byte&#xff09; 8位&#xff08;bit&#xff09;&#xff0c;我们通常称比特为小b 1千字节&#xff08;KB,Kilobyte&#xff09;1024字节&#xff08;2的10次方字节&#xff09;&#xff08;1KB1024B&#xff09;&#xff0c;我们经常称字节为大B 通用计算…

vue.jsr入门_JSR-308和Checker框架为jOOQ 3.9添加了更多类型安全性

vue.jsr入门Java 8引入了JSR-308&#xff0c;它为Java语言添加了新的注释功能。 最重要的是&#xff1a;键入注释。 现在可以像下面这样设计怪物了&#xff1a; 比注解更疯狂的是类型注解。 在数组上。 谁认为这是有效的Java代码&#xff1f; pic.twitter.com/M9fSRRerAD — …

数组索引必须为正整数或逻辑值_Office 365函数新世界——动态数组

革新一个旧的函数体系&#xff0c;无外乎从这么几个方面入手&#xff0c;函数的运行效率、函数的编写方式以及扩展新的函数功能。今天咱们就学习一下&#xff0c;看看365新函数是如何通过这三个方面打破旧函数条条框框的。365函数系列推出了一个新的概念&#xff0c;叫做动态数…