Активация всплывающих уведомлений из классических приложений

Упакованные и неупакованные приложения Win32 могут отправлять интерактивные всплывающие уведомления так же, как приложения UWP. Сюда входят упакованные приложения (см. раздел Создание нового проекта для упаковаемого классического приложения WinUI 3); упакованные приложения с внешним расположением (см. раздел Предоставление удостоверения пакета путем упаковки с внешним расположением); и неупакованные приложения (см. раздел Создание нового проекта для неупакованного классического приложения WinUI 3).

Однако для неупакованного приложения Win32 необходимо выполнить несколько специальных действий. Это связано с различными схемами активации и отсутствием удостоверения пакета во время выполнения.

В этом разделе перечислены варианты отправки всплывающего уведомления в Windows 10. Каждый параметр полностью поддерживает...

  • Сохранение в центре уведомлений
  • Возможность активации как из всплывающего меню, так и из центра уведомлений
  • Возможность активации, когда EXE-файл не запущен

Все параметры

В таблице ниже представлены параметры поддержки всплывающих уведомлений в классическом приложении и соответствующие поддерживаемые функции. Вы можете выбрать наиболее подходящий для вашего сценария параметр.

Параметр Визуальные элементы Действия Входные данные Активация внутри процесса
Активатор COM ✔️ ✔️ ✔️ ✔️
Без COM / CLSID объекта-заглушки ✔️ ✔️

Предпочитаемый параметр — активатор COM

Это предпочтительный вариант, который подходит для классических приложений и поддерживает все функции уведомлений. Не бойтесь использовать "активатор COM"; у нас есть библиотека для приложений C# и C++, которая упрощает работу, даже если вы никогда не писали COM-сервер до этого.

Визуальные элементы Действия Входные данные Активация внутри процесса
✔️ ✔️ ✔️ ✔️

С помощью параметра "Активатор COM" в приложении можно использовать следующие шаблоны уведомлений и типы активации.

Шаблон и тип активации Поставляется в плане Распаковка
ToastGeneric (передний план) ✔️ ✔️
ToastGeneric (фон) ✔️ ✔️
ToastGeneric (протокол) ✔️ ✔️
Традиционные шаблоны ✔️

Примечание

Если вы добавите активатор COM в существующее упакованое приложение, активации уведомлений Foreground/Background и Legacy активируют активатор COM вместо командной строки.

Сведения об использовании этого параметра см. в разделах Отправка локального всплывающего уведомления из классических приложений C# или Отправка локального всплывающего уведомления из приложений Win32 C++ WRL.

Альтернативный параметр — без COM / CLSID объекта-заглушки

Это альтернативный вариант, если вы не можете реализовать активатор COM. Однако вы пожертвуете некоторыми функциями, такими как поддержка ввода (текстовые поля на всплывающем окне) и активация внутри процесса.

Визуальные элементы Действия Входные данные Активация внутри процесса
✔️ ✔️

При использовании этого параметра, если вы поддерживаете настольный компьютер, вы будете гораздо более ограничены в шаблонах уведомлений и типах активации, которые вы можете использовать, как показано ниже.

Шаблон и тип активации Поставляется в плане Распаковка
ToastGeneric (передний план) ✔️
ToastGeneric (фон) ✔️
ToastGeneric (протокол) ✔️ ✔️
Традиционные шаблоны ✔️

Для упакованных приложений просто отправляйте всплывающие уведомления, как в приложении UWP. Когда пользователь щелкает всплывающее уведомление, приложение будет запущено в командной строке с аргументами запуска, указанными во всплывающем окне.

Для неупакованных приложений настройте AUMID, чтобы можно было отправлять всплывающие уведомления, а затем укажите CLSID в ярлыке. Это может быть любой случайный GUID. Не добавляйте COM-сервер/активатор. Также необходимо добавить COM CLSID "объекта-заглушки", за счет чего центр уведомлений будет хранить уведомление. Обратите внимание, что можно использовать только всплывающие уведомления по активации протокола, так как заглушка CLSID приведет к прерыванию активации любых других всплывающих уведомлений. Поэтому необходимо обновить приложение для поддержки активации протокола и активировать протокол всплывающего уведомления для собственного приложения.

Ресурсы