Подниму старую тему, т.к. сам задался подобной проблемой, и нашёл решение в английском форуме совсем в другой теме.
Там решалась неправильная работа кнопки в таскбаре на мультимониторной системе.
Решение заключается в правильном хендле.
В Lazarus'е нет Application.Handle, отсюда и начинаются проблемы.
Если с COM-интерфейсом ITaskbarList3 использовать Form.Handle, то перед Application.Run в коде проекта надо сделать Application.MainFormOnTaskBar := True;
Это, собственно, и требовалось для работы примера из блога в первом посте.
Надо только добавить в uses ShlObj и ComObj, и объявить недостающий GUID, которого нет в ShlObj.pas
- Код: Выделить всё
const
IID_ITaskbarList3: TGUID = '{ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf}';
После чего непосредственно применить Application.MainFormOnTaskBar в коде проекта
- Код: Выделить всё
Application.CreateForm(TForm1, Form1);
{$IFDEF WINDOWS}{$Warnings OFF}Application.MainFormOnTaskBar := True;{$Warnings ON}{$ENDIF}
Application.Run;
Lazarus.png
Либо, как в вышеупомянутом компоненте KASToolBar из исходников DoubleCommander'а, вместо Application.Handle необходимо использовать WidgetSet.AppHandle (требует uses InterfaceBase).
Но если код компонента просто брать, и адаптировать под себя - то тоже не всё будет хорошо.
В его реализации проверяется родительская форма, и работать будет при выборе WidgetSet.AppHandle.
При выборе хендла главной формы в качестве родительской для работы также потребуется Application.MainFormOnTaskBar.
У вас нет необходимых прав для просмотра вложений в этом сообщении.