从桌面应用激活 Toast 通知

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

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

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

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

所有选项

下表说明了在桌面应用中支持 Toast 的选项,以及相应的支持功能。 可以使用该表为方案选择最佳选项。

选项 视觉元素 行动 输入 在进程中激活
COM 激活器 支持 支持 支持 支持
无 COM / 存根 CLSID 支持 支持 不支持 不支持

首选选项 - COM 激活器

这是适用于桌面应用的首选选项,支持所有通知功能。 不要害怕“COM 激活器”;我们有一个库 ,适用于 C# 和 C++ 应用,这使得这一过程非常简单,即使你以前从未编写过 COM 服务器也是如此。

视觉元素 行动 输入 在进程中激活
支持 支持 支持 支持

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

模板和激活类型 已包装 无包装
ToastGeneric Foreground 支持 支持
ToastGeneric 背景 支持 支持
ToastGeneric 协议 支持 支持
旧模板 支持 不支持

注释

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

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

替代选项 - 无 COM / 存根 CLSID

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

视觉元素 行动 输入 在进程中激活
支持 支持 不支持 不支持

使用此选项时,如果支持桌面,则通知模板和可以使用的激活类型将受到更多限制,如下所示。

模板和激活类型 已包装 无包装
ToastGeneric Foreground 支持 不支持
ToastGeneric 背景 支持 不支持
ToastGeneric 协议 支持 支持
旧模板 支持 不支持

对于打包的应用,只需发送类似于 UWP 应用的 Toast 通知即可。 当用户单击你的 Toast 时,应用程序将通过命令行启动,并使用你在 Toast 中指定的启动参数。

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

资源