Я перемещаю окно (принадлежащее другому процессу) вперед, чтобы сделать его снимок экрана. Я могу сделать это, используя SetForegroundWindow
, однако эта функция возвращается немедленно. Другой процесс занимает много времени, чтобы перерисовать главное окно (что требует доступа к базе данных), поэтому я не могу быть уверен, что когда я делаю скриншот, окно полностью отображается. Иногда все, что я получаю на скриншоте - это контур целевого окна поверх любого окна, которое ранее было на переднем плане.
Есть ли надежный способ дождаться полной окраски окна другого процесса? Я подозреваю, что нет, но это стоит попробовать. Может быть, я могу отправить сообщение в окно, которое будет иметь такой эффект?
Примечание : язык реализации не важен, но мне нужно решение, использующее собственный API Windows, либо непосредственно из кода C / C ++, либо через P / Invoke (например, из C # или VB.NET). К сожалению, я не могу использовать какие-либо функции WinForms.