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

资源