Winフォームからトースト通知を作成するためにさまざまな投稿を検索しましたが、これらを介してトースト通知を生成するときにエラーが発生します。
System.Exception:要素が見つかりません。 (HRESULT:0x80070490からの例外)。
Csprojファイルを編集し、以下を追加しました。
<PropertyGroup>
<TargetPlatformVersion>10.0.10586</TargetPlatformVersion>
</PropertyGroup>
Windows.UI.Notificationsの提案に従って、Windows.Data
およびWindows.UI
への参照と、System.Runtime.dll
への参照を追加しました
using Windows.Data.Xml.Dom;
using Windows.UI.Notifications;
using System.Windows.Forms;
using System;
namespace ToastNotify
{
class Notify
{
public void GenerateToast(string header, string content)
{
ToastTemplateType toastTemplate = ToastTemplateType.ToastImageAndText02;
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(toastTemplate);
XmlNodeList toastTextElements = toastXml.GetElementsByTagName("text");
toastTextElements[0].AppendChild(toastXml.CreateTextNode(header));
toastTextElements[1].AppendChild(toastXml.CreateTextNode(content));
XmlNodeList toastImageElements = toastXml.GetElementsByTagName("image");
((XmlElement)toastImageElements[0]).SetAttribute("src", "..\\..\\Resources\\icon.ico");
IXmlNode toastNode = toastXml.SelectSingleNode("/toast");
((XmlElement)toastNode).SetAttribute("duration", "long");
ToastNotification toast = new ToastNotification(toastXml);
try
{
ToastNotificationManager.CreateToastNotifier().Show(toast);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
私がどこで間違っているのかについて何か提案はありますか?
CreateToastNotifierには明示的にapplicationId
を指定する必要があります。
このような:
private const String APP_ID = "Microsoft.Samples.DesktopToastsSample";
...
ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast);
しかし、悪い知らせがあります。 Windows 10以降、1709WinFormsアプリケーションはトースト通知を表示しません。以前はShow(toast)が機能していましたが、現在は例外をスローせず、トースト通知も表示しません。
私はまだこれを理解しています。
Prateek Shrivastavaが指摘したように、(新しい)制限があります。
更新:
これは、APP_IDを使用してセットアップを作成し、通知がすべてのWindows 10バージョンで機能するようにするためのステップバイステップガイドです: ローカルトースト通知を送信しますデスクトップC#アプリから
更新:
セットアップなしでWindows101903で再び機能します。