从桌面应用激活 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 的协议激活你自己的应用。