Откуда приходит вторичный образ в (node.js) тост-уведомлении Windows 8?
Я использую node-notifier
( ссылка) в node.js
показывать всплывающее уведомление в Windows 8. У меня оно работает, и я могу точно настроить заголовок, текст и основное изображение в уведомлении. Однако в всплывающих уведомлениях Windows 8 имеется дополнительное (меньшее) изображение. Увидеть ниже:
Так, node-notifier
использует тостер, который, в свою очередь, использует ToastNotificationManager. Но я нигде не могу найти ссылку на это вторичное изображение. Я посмотрел здесь и здесь на сайте Microsoft.
Это вторичное изображение также отображается в других уведомлениях, которые я получаю от таких приложений, как Outlook, Slack и т. Д.
Откуда это вторичное изображение? Документация просто устарела? Можно ли изменить тостер для доступа к этому дополнительному изображению?
1 ответ
Вторичное изображение - это значок ярлыка в папке "Пуск" для программы, зарегистрированной для поднятия тоста. Чтобы изменить его, вам нужно изменить значок на ярлыке.
Для настольного приложения использовать ToastNotificationManager
класс, необходимо иметь ярлык в меню "Пуск" и AppUserModelId, связанный с этим ярлыком. В ToastNotificationManager
время создания, вызывающая сторона передает тот же AppUserModelId, который связывается со связанным значком для ярлыка. Подробнее о регистрации настольных приложений для поднятия тостов можно узнать на этой странице документации MSDN.
Глядя на код тостера, он устанавливает ярлык для файла с именем toast.lnk в меню "Пуск":
String shortcutPath =
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
"\\Microsoft\\Windows\\Start Menu\\Programs\\toast.lnk";
И это создает ярлык, нацеленный на начальный процесс вызова:
String exePath = Process.GetCurrentProcess().MainModule.FileName;
Обновление значка в ярлыке вручную должно подтвердить, что вы можете изменить то, что отображается локально, но, вероятно, требуется обновление для тостера, чтобы указать расположение значка (для поддержки нескольких вызывающих абонентов с разными ярлыками или для вызова IShellLink::SetIconLocation
).