Откуда приходит вторичный образ в (node.js) тост-уведомлении Windows 8?

Я использую node-notifier ( ссылка) в node.js показывать всплывающее уведомление в Windows 8. У меня оно работает, и я могу точно настроить заголовок, текст и основное изображение в уведомлении. Однако в всплывающих уведомлениях 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).

Другие вопросы по тегам