2
我正在尝试捕获桌面。我发现了一些捕获桌面的代码,但需要一些时间。如何使用vC++捕获桌面
void CSDITESTView::OnFileTest()
{
int nScreenWidth = GetSystemMetrics(SM_CXSCREEN);
int nScreenHeight = GetSystemMetrics(SM_CYSCREEN);
HWND hDesktopWnd = GetDesktopWindow()->m_hWnd;
HDC hDesktopDC = ::GetDC(hDesktopWnd);
HDC hCaptureDC = CreateCompatibleDC(hDesktopDC);
HBITMAP hCaptureBitmap =CreateCompatibleBitmap(hDesktopDC,nScreenWidth, nScreenHeight);
SelectObject(hCaptureDC,hCaptureBitmap);
BitBlt(hCaptureDC,0,0,nScreenWidth,nScreenHeight, hDesktopDC,0,0,SRCCOPY|CAPTUREBLT);
::ReleaseDC(hDesktopWnd,hDesktopDC);
DeleteDC(hCaptureDC);
}
但我需要快速捕获并保存为图像的代码。
在此先感谢..
我不知道为什么这将花费太长时间。确切地说,以及哪一行代码最慢? – 2010-11-10 12:17:05
我需要将桌面操作记录到视频中。但上面的代码需要2或3秒才能捕获单个图像。所以当我不断使用代码捕捉图像时,系统会挂起。我正在寻找一个代码,无需任何时间捕获。请引导我到正确的道路。 – Santhosh 2010-11-11 05:09:29
您是否尝试过在开始时创建位图并重新使用它而不是每次都创建它? – 2010-11-12 10:30:10