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

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

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

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

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

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

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

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

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

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

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

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

Тип шаблона и активации Поставляется в плане Распаковка
ToastGeneric Foreground ✔️ ✔️
Фон toastGeneric ✔️ ✔️
ToastGeneric Protocol ✔️ ✔️
Устаревшие шаблоны ✔️

Примечание.

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

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

Альтернативный вариант — нет COM/ Stub CLSID

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

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

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

Тип шаблона и активации Поставляется в плане Распаковка
ToastGeneric Foreground ✔️
Фон toastGeneric ✔️
ToastGeneric Protocol ✔️ ✔️
Устаревшие шаблоны ✔️

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

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

Ресурсы