Прогресс панели задач Windows 7 работает в одном приложении, но не в другом - PullRequest
10 голосов
/ 17 января 2011

У меня есть два разных приложения, оба нативных, написанных на C ++ Builder 2009, оба MDI, и оба используют один и тот же код утилиты индикатора выполнения. Один из них корректно обновляет панель задач Windows 7 с ее прогрессом. Другой нет.

Я не могу найти никаких очевидных различий между этими двумя приложениями. Об ошибках в приложении не сообщается: вызовы ITaskbarList3::SetProgressValue и ITaskbarList3::SetProgressState возвращают S_OK, но ничего не происходит на панели задач Windows 7.

Есть ли какие-нибудь ошибки в работе панели задач Windows 7 для работы? Какие-нибудь требования, которые я мог бы пропустить?

Ответы [ 2 ]

1 голос
/ 10 декабря 2014

Вероятно, моя проблема была связана с Delphi / C ++ Builder и была результатом различий в том, как VCL обрабатывает свое окно верхнего уровня.

Если Application.MainFormOnTaskBar истинно, то ITaskbarList3 работает, только если в качестве параметра HWND используется Application.MainFormHandle.

Если Application.MainFormOnTaskBar равно false, ITaskbarList3 работает только в том случае, если в качестве параметра HWND используется Application.Handle.

В моем случае один проект имел MainFormOnTaskBar истину, а один - ложь.

0 голосов
/ 08 августа 2012

Я не написал приложение, специально использующее индикатор выполнения Windows 7, но я написал много приложений .Net, которые требуют обновления прогресса с использованием живой анимации, и самым большим преимуществом из моего опыта было то, что вы обновляли индикатор выполнения на основная нить.

...