Настройка значка и имени приложения в Action Center для медиапроигрывателя в Delphi
Вопрос, поднятый разработчиком, касается настройки отображения имени и значка приложения в Action Center для медиапроигрывателя, созданного с использованием интерфейсов Windows Runtime ISystemMediaTransportControls и ISystemMediaTransportControls2. Разработчик столкнулся с проблемой, что при добавлении медиапроигрывателя в систему, его имя и значок по умолчанию принимают значения последнего активного приложения. Исследование исходного кода браузеров Firefox и Chromium не помогло найти решение.
Решение проблемы
Для решения данной проблемы необходимо использовать идентификатор приложения AppUserModelID, который был введен в Windows 7 для идентификации приложений в меню "Пуск". AppUserModelID используется для отображения информации об приложении в различных частях системы, включая уведомления в Action Center.
Шаги для настройки AppUserModelID:
Создание ярлыка в меню "Пуск": Для начала необходимо создать ярлык для вашего приложения в папке shell:Start Menu. В этом ярлыке должен быть установлен специальный параметр AppUserModelID.
Установка AppUserModelID для запущенного процесса: После создания ярлыка, для текущего процесса приложения нужно установить AppUserModelID с помощью функции SetCurrentProcessExplicitAppUserModelID.
Пример кода на Object Pascal (Delphi):
uses
Winapi.Windows, Winapi.ShlObj, Winapi.PropKey, Winapi.PropSys;
function InstallShortcut(AppUserModelID, ExePath, ShortcutPath, Description, Arguments, IconPath: string; IconIndex: integer): Boolean;
var
newShortcut: IShellLink;
persistFileSave: IPersistFile;
newShortcutProperties: IPropertyStore;
propVariant: TPropVariant;
begin
// Создание и настройка интерфейса IShellLink
// ...
// Настройка свойств IPropertyStore
// ...
// Сохранение ярлыка
// ...
end;
procedure SetAppUserModelID(AppUserModelID: string);
var
propVariant: TPropVariant;
begin
propVariant.vt := VT_BSTR;
propVariant.bstrVal := PChar(AppUserModelID);
SetCurrentProcessExplicitAppUserModelID(PChar(AppUserModelID));
// Сохранение AppUserModelID в реестре для текущего пользователя
// ...
end;
// Пример использования
SetAppUserModelID('com.example.appname');
InstallShortcut('com.example.appname', 'C:\Path\to\your\app.exe', 'C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\App Name.lnk', 'Application Description', '', 'C:\Path\to\icon.ico', 0);
Важные замечания:
Создание ярлыка в меню "Пуск" не является обязательным для всех случаев использования AppUserModelID.
Информация в реестре используется для уведомлений, а информация в папке shell:Start Menu — для медиаплеерного контроля и других функций системы.
Разработчикам, столкнувшимся с аналогичной проблемой, рекомендуется использовать данный подход для настройки отображения имени и значка приложения в Action Center.
Пользователь сталкивается с проблемой настройки отображения имени и значка медиапроигрывателя в Action Center на Delphi, используя интерфейсы Windows Runtime, и для решения задачи необходимо использовать идентификатор приложения AppUserModelID.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.