Анимация сворачивания окна в Windows 7 и Delphi 7

Как известно, в Windows 7 при включённых эффектах окно сворачивается не мгновенно, а с анимацией длительностью в несколько сотых секунд.

У меня есть программа, написанная в Delphi 7, которая при нажатии на кнопку, сворачивает основное окно вызовом Hide и делает снимок экрана. Сейчас, чтобы избежать артефактов наподобие того, что на картинке ниже, перед снимком я добавил задержку в 2 секунды, чтобы окно успело спрятаться.

Окно программы ещё видно

Есть ли более правильное решение данной проблемы? Например, принудительно спрятать окно мгновенно или добавить проверку, что оно на 100% невидимо? Желательно, чтобы было работоспособно и в других версия ОС Windows.


Ответы (1 шт):

Автор решения: Artem

Нашёл элегантное решение с использованием прозрачности (свойства AlphaBlend и AlphaBlendValue):

  DefaultTransparency := AlphaBlendValue;
  AlphaBlendValue := 0;
  AlphaBlend := True;
  try
    try
      MakeScreenshot;
    finally
      AlphaBlendValue := DefaultTransparency;
      AlphaBlend := False;
    end;
  except
  end;
→ Ссылка