Почему основная форма Delphi WindowState возвращается как "wsNormal", когда окно свернуто?

У меня есть приложение мониторинга, написанное на Delphi 7, которое работает на части дополнительного монитора. Я хотел бы, чтобы он восстановил себя до нормальной видимости, если окно будет свернуто (например, если я использую команду "Windows-D" (view desktop) на главном мониторе)

Я пробовал этот код, активируемый таймером каждые несколько секунд:

    if (Mainform.WindowState <> wsNormal ) then
        Mainform.WindowState := wsNormal;      {restore main window if minimized}

Это не работает. Чтобы отладить его, я изменил код для регистрации значения Mainform.WindowState в файл, как программа бегущий. Значение остается wsNormal даже при минимизации главного окна формы. Почему?

1 ответов


потому что основная форма не свернута. Когда приложение свернуто, VCL просто скрывает основную форму. Вы можете проверить, если приложение свернуто и восстановить, если да:

if IsIconic(Application.Handle) then
  Application.Restore;