91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

使用DXGI錄制屏幕,工程基于VS2015,可以正常保存圖片

資源截圖

代碼片段和文件信息

#include?“../stdafx.h“
#include?“VideoDxCaptor.h“

#include?
#pragma?comment(lib?“Dwmapi.lib“)

?VideoDXCaptor::VideoDXCaptor(void)??
?{?
?m_lpDDraw?=?NULL;?
?m_lpDDSPrime?=?NULL;?
?m_lpDDSBack?=?NULL;
?}
VideoDXCaptor::~VideoDXCaptor(void)?
{?
Deinit();
}

BOOL?VideoDXCaptor::Init()
{
HMODULE?hDll?=?LoadLibrary(“ddraw.dll“);
if?(hDll?==?NULL)
{
(“無法載入ddraw.dll\n“);
return?FALSE;
}

//?載入ddraw的導入函數
PFN_DirectDrawCreate?DirectDrawCreateFunc?=?(PFN_DirectDrawCreate)GetProcAddress(hDll?“DirectDrawCreate“);
if?(DirectDrawCreateFunc?==?NULL)
{
(“無法找到訪問點:DirectDrawCreate\n“);
return?FALSE;
}

HRESULT?hr?=?DirectDrawCreateFunc(NULL?&m_lpDDraw?NULL);
if?(FAILED(hr))
{
(“DirectDrawCreate失敗\n“);
return?FALSE;
}

hr?=?m_lpDDraw->SetCooperativeLevel(NULL?DDSCL_NORMAL);
if?(FAILED(hr))
{
(“SetCooperativeLevel失敗\n“);
return?FALSE;?
}

DDSURFACEDESC?DDSdesc;
ZeroMemory(&DDSdesc?sizeof(DDSdesc));
DDSdesc.dwSize?????????=?sizeof(DDSdesc);
DDSdesc.dwFlags????????=?DDSD_CAPS;
DDSdesc.ddsCaps.dwCaps?=?DDSCAPS_PRIMARYSURFACE;
hr?=?m_lpDDraw->CreateSurface(&DDSdesc?&m_lpDDSPrime?NULL);
if?(FAILED(hr))
{
(“CreateSurface?主表面失敗\n“);
return?FALSE;?
}

ZeroMemory(&DDSdesc?sizeof(DDSdesc));
DDSdesc.dwSize??=?sizeof(DDSdesc);
DDSdesc.dwFlags?=?DDSD_ALL;
hr?=?m_lpDDSPrime->GetSurfaceDesc(&DDSdesc);
if?(FAILED(hr))
{
(“GetSurfaceDesc失敗\n“);
return?FALSE;
}

//?備份描述信息
memcpy(&m_DDSdesc?&DDSdesc?sizeof(DDSdesc));

DDSdesc.dwFlags????????=?DDSD_CAPS?|?DDSD_HEIGHT?|DDSD_WIDTH;?
DDSdesc.ddsCaps.dwCaps?=?DDSCAPS_OFFSCREENPLAIN;
hr?=?m_lpDDraw->CreateSurface(&DDSdesc?&m_lpDDSBack?0);
if?(FAILED(hr))
{
(“CreateSurface?后備表面失敗\n“);
return?FALSE;
}
return?TRUE;
}
VOID?VideoDXCaptor::Deinit()
{
if?(m_lpDDSBack)
{
m_lpDDSBack->Release();
m_lpDDSBack?=?NULL;
}

if?(m_lpDDSPrime)
{
m_lpDDSPrime->Release();
m_lpDDSPrime?=?NULL;
}

if?(m_lpDDraw)
{
m_lpDDraw->Release();
m_lpDDraw?=?NULL;
}
}

BOOL?VideoDXCaptor::CaptureImage(RECT?&rect?void?*pData?INT?&nLen)
{
if?(m_lpDDSBack?==?NULL)
{
(“DDraw對象未初始化\n“);
return?FALSE;
}

HRESULT?hr?=?m_lpDDSBack->BltFast(rect.left?rect.top?m_lpDDSPrime?&rect?DDBLTFAST_NOCOLORKEY?|?DDBLTFAST_WAIT);
if?(FAILED(hr))
{
(“BltFast失敗\n“);
return?FALSE;
}

DDSURFACEDESC?surfDesc;
ZeroMemory(&surfDesc?sizeof(surfDesc));?
surfDesc.dwSize?=?sizeof(surfDesc);
//hr?=?lpDDSPrime->Lock(&rect?&surfdesc?DDLOCK_READONLY?|?DDLOCK_WAIT?|?DDLOCK_SURFACEMEMORYPTR??NULL);
hr?=?m_lpDDSBack->Lock(&rect?&surfDesc?DDLOCK_READONLY?|?DDLOCK_WAIT?|?DDLOCK_SURFACEMEMORYPTR??NULL);
if?(FAILED(hr))
{
(“Lock失敗\n“);
return?FALSE;
}

//?這里拷貝的是32位數據,我們只需要24位的RGB數據
//memcpy(pBuf?(BYTE*)surfDesc.lpSurface?surfDesc.dwWidth?*?surfDesc.dwHeight?*?surfDesc.ddpfPixelFormat.dwRGBBitCount?/?8);

//?將抓上來的圖像轉成RGB數據(去掉Alpha值)
if?(m_DDSdesc.ddpfPixelFormat.dwRGBBitCount?==?32)
{
nLen?=?(rect.right?-?rect.left)?*?(rect.bottom?-?rect.top)?*?3;

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-08-21?11:27??screencapture\
?????目錄???????????0??2018-08-21?10:41??screencapture\.vs\
?????目錄???????????0??2018-08-21?10:41??screencapture\.vs\capturecreen\
?????目錄???????????0??2018-08-21?11:10??screencapture\.vs\capturecreen\v14\
?????文件???????22528??2018-08-21?11:27??screencapture\.vs\capturecreen\v14\.suo
?????目錄???????????0??2018-08-21?10:41??screencapture\Captor\
?????文件????????3663??2017-04-26?00:57??screencapture\Captor\DXCaptor.cpp
?????文件?????????789??2017-04-26?00:57??screencapture\Captor\DXCaptor.h
?????文件????????6115??2017-04-26?00:57??screencapture\Captor\DXGICaptor.cpp
?????文件????????1087??2017-04-26?00:57??screencapture\Captor\DXGICaptor.h
?????文件????????4566??2017-04-26?00:57??screencapture\Captor\GDICaptor.cpp
?????文件?????????750??2017-04-26?00:57??screencapture\Captor\GDICaptor.h
?????文件??????????40??2018-08-21?11:34??screencapture\README.md
?????目錄???????????0??2018-08-21?11:28??screencapture\capturecreen\
?????文件????????3655??2017-04-26?00:57??screencapture\capturecreen\DXCaptor.cpp
?????文件?????????789??2017-04-26?00:57??screencapture\capturecreen\DXCaptor.h
?????文件????????4558??2017-04-26?00:57??screencapture\capturecreen\GDICaptor.cpp
?????文件?????????740??2017-04-26?00:57??screencapture\capturecreen\GDICaptor.h
?????文件????????1710??2017-04-26?00:57??screencapture\capturecreen\ReadMe.txt
?????文件????????8341??2018-08-21?11:34??screencapture\capturecreen\capturecreen.cpp
?????文件????????8046??2018-08-21?11:21??screencapture\capturecreen\capturecreen.vcxproj
?????文件????????1339??2018-08-21?11:21??screencapture\capturecreen\capturecreen.vcxproj.filters
?????文件?????????291??2017-04-26?00:57??screencapture\capturecreen\stdafx.cpp
?????文件?????????305??2017-04-26?00:57??screencapture\capturecreen\stdafx.h
?????文件?????????306??2017-04-26?00:57??screencapture\capturecreen\targetver.h
?????文件????????1290??2017-04-26?00:57??screencapture\capturecreen.sln

評論

共有 條評論