Пожалуйста, обратите внимание, что пользователь заблокирован
Всем привет, вот функция которая должна получать пискли созданного нового рабочего стола:
g_pImageBits равняется NULL после выполнения функции#include <windows.h>
int main()
{
HDESK g_hDesk;
BITMAPINFOHEADER g_sImageInfo = {};
char* g_pImageBits = 0;
g_hDesk = OpenDesktopA("novij rabochij stol", 0, TRUE, GENERIC_ALL);
if (!g_hDesk)
g_hDesk = CreateDesktopA("novij rabochij stol", NULL, NULL, 0, GENERIC_ALL, NULL);
SetThreadDesktop(g_hDesk);
HWND hWnd = GetDesktopWindow();
RECT rc;
GetClientRect(hWnd, &rc);
int cx = rc.right - rc.left;
int cy = rc.bottom - rc.top;
if (!g_pImageBits || (g_sImageInfo.biWidth != cx) || (g_sImageInfo.biHeight != cy))
{
if (g_pImageBits)
free(g_pImageBits);
int line = cx * 4;
int size = cy * line;
g_pImageBits = (char*)malloc(size);
g_sImageInfo.biSize = sizeof(g_sImageInfo);
g_sImageInfo.biWidth = cx;
g_sImageInfo.biHeight = cy;
g_sImageInfo.biPlanes = 1;
g_sImageInfo.biBitCount = 32;
g_sImageInfo.biCompression = BI_RGB;
g_sImageInfo.biSizeImage = size;
}
HDC hDc = GetDC(NULL);
HDC hMemDc = CreateCompatibleDC(hDc);
HBITMAP hMemBitmap = CreateCompatibleBitmap(hDc, cx, cy);
HBITMAP hOldBitmap = (HBITMAP)SelectObject(hMemDc, hMemBitmap);
BitBlt(hMemDc, 0, 0, cx, cy, hDc, rc.left, rc.top, SRCCOPY);
SelectObject(hMemDc, hOldBitmap);
GetDIBits(hDc, hMemBitmap, 0, cy, g_pImageBits, (BITMAPINFO*)&g_sImageInfo, DIB_RGB_COLORS);
DeleteObject(hMemBitmap);
DeleteDC(hMemDc);
ReleaseDC(hWnd, hDc);
}