Вопрос в том, что: у меня есть приложение WPF и я хочу отправить уведомление в стиле Win10.
Я искал все сайты, которые я знаю, и нашел способ MSDN сделать это: https://docs.microsoft.com/en-us/windows/uwp/design/shell/tiles-and-notifications/send-local-toast-desktop.
Но, к сожалению, я не использую установщик Wix, поэтому мне удалось создать ярлык другим способом: IShellLinkW .
Пока мне удается отправить тост. но я не могу получить обратный вызов при работе с ним.
Мой короткий код создания:
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
{