web-dev-qa-db-ja.com

Win Forms .NET4.5でのトースト通知

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());

            }
        }
    }
}

私がどこで間違っているのかについて何か提案はありますか?

4
Etterz

CreateToastNotifierには明示的にapplicationIdを指定する必要があります。

このような:

private const String APP_ID = "Microsoft.Samples.DesktopToastsSample";
...
ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast);

しかし、悪い知らせがあります。 Windows 10以降、1709WinFormsアプリケーションはトースト通知を表示しません。以前はShow(toast)が機能していましたが、現在は例外をスローせず、トースト通知も表示しません。

私はまだこれを理解しています。

Prateek Shrivastavaが指摘したように、(新しい)制限があります。

こちらをご覧ください https://docs.Microsoft.com/en-us/uwp/api/windows.ui.notifications.toastnotificationmanager.createtoastnotifier

更新:
これは、APP_IDを使用してセットアップを作成し、通知がすべてのWindows 10バージョンで機能するようにするためのステップバイステップガイドです: ローカルトースト通知を送信しますデスクトップC#アプリから

更新:
セットアップなしでWindows101903で再び機能します。

6
Stepan Hakobyan