Фон
Я пытаюсь сделать снимок экрана конкретного окна, однако операционная система, в которой мне нужно это сделать, имеет очень высокую загрузку ЦП, и иногда мое приложение определяет это окно как видимое, однако на скриншоте оно либо не отображается, либо наполовину прорисовано.
Мое понимание
Поскольку загрузка ЦП очень высока, он не сможет предоставить достаточно ресурсов процессу, который открывает это конкретное окно. Поэтому проверка видимости окна успешна, это может означать, что окно было инициировано для создания, но еще не нарисовано (учитывая нехватку ресурсов).
Мой код
HWND hWnd = FindWindowExA(0, 0, NULL, programdata->caption);
if (hWnd)
{
if (IsWindowVisible(hWnd))
{
RECT rect = { 0 };
GetWindowRect(hWnd, &rect);
// if window size also matches requirement then
TakeScreenshot();
Вопрос
Есть ли какой-нибудь лучший способ определить, было ли окно полностью нарисовано и видно ли человеческому глазу?