繁体   English   中英

桌面 Win10 Toast 通知活动回调未触发

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM