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