Как решить, что интерфейс ITaskbarList3 не поддерживается в этой версии ОС на XE6

Delphi XE6 поднимает

Интерфейс ITaskbarList3 не поддерживается в этой версии ОС.

ошибка во время выполнения на Vista и XP. Это известная проблема в Quality Central, решенная в XE7.

Ошибка возникает, когда компонент TTaskbar VCL помещается в TForm, а приложение запускается в ОС, предшествующей Windows 7 (например, Vista или XP).

Как можно обойти это в XE6?


person Gad D Lord    schedule 13.10.2014    source источник


Ответы (1)


Этот интерфейс появился в Windows 7. В более ранних версиях он не реализован. Раздел требований документации поясняет это. Это, конечно, в высшей степени разумно, так как интерфейс инкапсулирует функциональность, которой нет в Vista и более ранних версиях.

На платформе ниже Windows 7 не следует пытаться использовать этот интерфейс. Я предполагаю, хотя вы этого и не утверждаете, что вы используете оболочку VCL вокруг этого интерфейса, а не сам интерфейс. Все равно решение одно. Избегайте компонента или, по крайней мере, пути кода, который использует рассматриваемый интерфейс.

Итак, если вы столкнулись с проблемой из-за того, что использовали TTaskbar, убедитесь, что вы не используете TTaskbar, когда программа работает в системе, которая не поддерживает ITaskbarList3. Вероятно, это означает, что компонент больше не будет создаваться с помощью конструктора форм, а вместо этого будет делаться условно с использованием кода времени выполнения.

person David Heffernan    schedule 13.10.2014
comment
Я понимаю. Поэтому, как правило, мне следует избегать размещения TTaskbar в моем дизайнере форм и создавать его только в том случае, если обнаружена Windows 7 или более поздняя версия. Это простое решение, но сомнительно, почему Embarcadero разработал что-то, что не имеет хорошего запасного варианта. - person Gad D Lord; 14.10.2014
comment
Они просто ошиблись. Как они часто делают. У них тоже неправильный диалог задач. Оригинальные версии были отключены при отключении тем. Они не очень хороши в тестировании, а их разработчики VCL не очень хорошо знают Win32. - person David Heffernan; 14.10.2014
comment
@GadDLord: Microsoft больше не поддерживает XP, а Embarcadero больше не поддерживает XP, а Vista уходит, поэтому они не удосужились протестировать TTaskBar на версиях до Win7, вот и все. И, как вы сказали, это было исправлено в XE7, поэтому они были проинформированы о проблеме, но не в первоначальном выпуске. - person Remy Lebeau; 14.10.2014