问题是:我有一个 WPF 应用程序,想发送Win10样式通知。
我搜索了所有我知道的网站,并找到了实现该目标的MSDN方法:https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop。
但不幸的是,我没有使用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
{
答案 0 :(得分:1)
最后我解决了这个问题,我发现这是因为在创建快捷方式时我以字符串格式传递了CLSID,但是正确的方法是将其作为byte []传递,因此这就是回调的原因方法不起作用。