![](/img/trans.png)
[英]Toast notification in WPF: ToastNotificationManager.History throws an exception win10
[英]Desktop Win10 Toast Notification active callback not firing
问题是:我有一个WPF应用程序,想发送一个 Win10 样式通知。
我搜索了我知道的所有网站,并找到了 MSDN 方法: https : //docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-桌面。
但不幸的是,我没有使用 Wix 安装程序,所以我设法以另一种方式创建了快捷方式: IShellLinkW 。
到目前为止,我成功发送了 Toast。 但是在操作时我无法得到回调。
我的创建快捷方式代码:
using (PropVariant appId = new PropVariant(_aumid))
{
ErrorHelper.VerifySucceeded(newShortcutProperties.SetValue
(
new PropertyKey(new Guid("9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3"), 5), appId)
);
}
效果很好,所以SetValue方法应该没问题
我想我可以用同样的方式用它的 GUID 调用回调方法:
var toastclass = typeof(T).GUID.ToString();
using (PropVariant toastid = new PropVariant(toastclass))
{
toastid.SetEnum(VarEnum.VT_CLSID);
ErrorHelper.VerifySucceeded
(
newShortcutProperties.SetValue
(
new PropertyKey(new Guid("9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3"), 26), toastid
)
);
}
ErrorHelper.VerifySucceeded(newShortcutProperties.Commit());
我是这样注册的
// Register type
var regService = new RegistrationServices();
regService.RegisterTypeForComClients
(
typeof(T),
RegistrationClassContext.LocalServer,
RegistrationConnectionType.MultipleUse
);
_registeredActivator = true;
但最后回调方法没有触发
[ClassInterface(ClassInterfaceType.None)]
[ComSourceInterfaces(typeof(INotificationActivationCallback))]
[Guid("9a88b91d-f9c4-4c63-91dd-175c2c2cb458"), ComVisible(true)]
public class AreaIconToast : NotificationActivator
{
最后我解决了这个问题,我发现这是因为我在创建快捷方式时以字符串格式传递了 CLSID,但正确的方法是将其作为 byte[] 传递,这就是回调方法不起作用的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.