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

  • 大小: 5KB
    文件類型: .7z
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-06
  • 語言: 其他
  • 標簽: 截屏??windows??GDI??DXGI??

資源簡介

windows下的抓屏組件包含了GDI,DDRAW和DXGI等多種技術的抓屏代碼

資源截圖

代碼片段和文件信息

#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的導入函數(shù)
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位數(shù)據(jù),我們只需要24位的RGB數(shù)據(jù)
//memcpy(pBuf?(BYTE*)surfDesc.lpSurface?surfDesc.dwWidth?*?surfDesc.dwHeight?*?surfDesc.ddpfPixelFormat.dwRGBBitCount?/?8);

//?將抓上來的圖像轉(zhuǎn)成RGB數(shù)據(jù)(

評論

共有 條評論