从桌面应用激活 toast 通知

打包和未打包的 Win32 应用可以像 UWP 应用一样发送交互式 Toast 通知。 这包括打包的应用 (请参阅 为打包的 WinUI 3 桌面应用创建新项目) ;使用外部位置 (打包的应用请参阅 使用外部位置) 打包来授予包标识 ;和未打包的应用 (请参阅 为未打包的 WinUI 3 桌面应用创建新项目) 。

但是,对于未打包的 Win32 应用,有几个特殊步骤。 这是因为激活方案不同,并且运行时缺少包标识。

在本主题中,我们列出了用于在 Windows 10 上发送 Toast 通知的选项。 每个选项完全支持…

  • 在操作中心中保持
  • 可以从弹出窗口和操作中心内激活
  • 可在 EXE 未运行时激活

所有选项

下表说明了用于在桌面应用内支持 toast 的选项,以及对应的受支持的功能。 你可以使用此表来选择最适合你的情形的选项。

选项 视觉对象 操作 输入 在进程内激活
COM 激活器 ✔️ ✔️ ✔️ ✔️
无 COM / 存根 CLSID ✔️ ✔️

首选选项 - COM 激活器

这是适用于桌面应用的首选选项,并支持所有通知功能。 不必担心使用“COM 激活器”;我们有 C#C++ 应用的资源库,让使用此选项变得很简单,即使你之前从未编写过 COM 服务器。

视觉对象 操作 输入 在进程内激活
✔️ ✔️ ✔️ ✔️

使用 COM 激活器选项,你可以在应用中使用以下通知模板和激活类型。

模板和激活类型 已打包 未打包
ToastGeneric 前台 ✔️ ✔️
ToastGeneric 后台 ✔️ ✔️
ToastGeneric 协议 ✔️ ✔️
旧版模板 ✔️

注意

如果将 COM 激活器添加到现有的打包应用,则前台/后台和旧版通知激活将激活 COM 激活器,而不是命令行。

若要了解如何使用此选项,请参阅从桌面 C# 应用发送本地 toast 通知从 Win32 C++ WRL 应用发送本地 toast 通知

备用选项 - 无 COM / 存根 CLSID

如果无法实现 COM 激活器,这是一个替代选项。 但是,你将牺牲一些功能,例如输入支持 (toast 上的文本框) 和激活进程内。

视觉对象 操作 输入 在进程内激活
✔️ ✔️

使用此选项时,如果支持桌面,则可以使用通知模板和激活类型,如下所示。

模板和激活类型 已打包 未打包
ToastGeneric 前台 ✔️
ToastGeneric 后台 ✔️
ToastGeneric 协议 ✔️ ✔️
旧版模板 ✔️

对于打包的应用,只需像 UWP 应用一样发送 Toast 通知。 当用户单击 Toast 时,你的应用将使用你在 toast 中指定的启动参数启动命令行。

对于未打包的应用,请设置 AUMID,以便可以发送 toast,然后在快捷方式上指定 CLSID。 可以是任何随机 GUID。 不要添加 COM 服务器/激活器。 你正在添加“存根”COM CLSID,这将导致操作中心保留通知。 请注意,只能使用协议激活 toast,因为存根 CLSID 会中断任何其他 Toast 激活的激活。 因此,必须更新应用以支持协议激活,并让 toast 的协议激活你自己的应用。

资源