Работа панели задач Windows 7 работает в одном приложении, но не в другом

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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