Почему на некоторых компьютерах GetObjectW имеет ширину 0? - PullRequest
0 голосов
/ 02 мая 2020

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

На некоторых компьютерах моих клиентов изображения не были созданы должным образом, потому что GetObjectW, кажется, устанавливает bmWidth и bmHeight до 0. Кто-нибудь знает, почему это так и почему это происходит только на нескольких избранных компьютерах (я никогда не могу воспроизвести его на своих компьютерах).

   HGDIOBJ hTempBitmap;
   BITMAP bAllDesktops;
   HDC hDC;
   LONG lWidth, lHeight;

   ZeroMemory(&bAllDesktops, sizeof(BITMAP));

   hDC = GetDC(NULL);
   hTempBitmap = GetCurrentObject(hDC, OBJ_BITMAP);
   GetObjectW(hTempBitmap, sizeof(BITMAP), &bAllDesktops);

   lWidth = bAllDesktops.bmWidth;
   lHeight = bAllDesktops.bmHeight;

   DeleteObject(hTempBitmap);
   ReleaseDC(NULL, hDC);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...