Эффективно получить скриншот рабочего стола Windows

Есть ли более эффективный способ получить копию рабочего стола Windows (используя GDI или любую другую библиотеку), чем код ниже

HDC dcDesktop;
HDC dcMem;
HBITMAP hbmpMem;
HBITMAP hOriginal;
BITMAP bmpDesktopCopy;
dcDesktop = GetDC( GetDesktopWindow() ); 
dcMem = CreateCompatibleDC( dcDesktop );
hbmpMem = CreateCompatibleBitmap( dcMem, m_lWidth, m_lHeight );
BitBlt( dcMem, 0, 0, m_lWidth, m_lHeight, dcDesktop, 0, 0, SRCCOPY );
// Copy the hbmpMem to the desktop copy
GetObject(hbmpMem, sizeof(BITMAP), (LPSTR)&bmpDesktopCopy);
1 ответ

http://www.codeproject.com/KB/dialog/screencap.aspx

На этой странице есть несколько разных способов сделать скриншоты. Метод DirectX, который они используют, кажется достаточно простым.

Помимо того, что упоминается в этой статье, я больше не думаю, что это эффективный метод захвата рабочего стола.

licensed under cc by-sa 3.0 with attribution.