打包和解压缩的 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 的协议激活你自己的应用。