7

もともと Windows 7 用に作成された Windows フォーム アプリケーション (対 WPF) があります。この製品を Windows 8 で使用できるように進めています。

Windows 8 を実行しているユーザーのために、この WinForm アプリから Windows 8 のトースト通知 (Windows.UI.Notifications 名前空間) を表示することは可能ですか?

例が見つからないようです。私が見つけたものはすべて WPF または Windows ストア アプリであり、WinForm アプリの例はありません。

4

1 に答える 1

4

Win 8のwinform pojectでトースト通知を使用することができます。winformプロジェクトを作成し、ボタンを追加すると、ボタンを押すと、ウィンドウの右上にトースト通知が表示されます。以下は私がやったことです。

まず、「Windows」参照を追加できるように、cspoj ファイル (winform プロジェクトではデフォルトで閉じられています) を変更して win 8 プラットフォームを開く必要があります。

デスクトップ プロジェクトでは、Core タブはデフォルトでは表示されません。Windows ランタイムを追加するには、ソリューション エクスプローラーでプロジェクトを右クリックし、[プロジェクトのアンロード] を選択して、次のスニペットを追加し、プロジェクトを再度開きます (プロジェクトを右クリックして [プロジェクトの再読み込み] を選択します)。[参照マネージャー] ダイアログ ボックスを開くと、[コア] タブが表示されます。次に、プロジェクトに「Windows」参照を追加できます。

<PropertyGroup>
      <TargetPlatformVersion>8.0</TargetPlatformVersion>
</PropertyGroup>

詳細については、このリンク(ページの最後の部分の近く) を参照してください。

次に、System.Runtime 参照を追加します。

「C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades\System.Runtime.dll」に dll を手動で追加します (参照を右クリックし、参照を追加し、参照します)。

3 番目に、トースト通知を追加します (このコードをボタン押下イベントに追加できます)。

コードのこの部分は、このリンクを参照でき ます 注: トースト通知のみを表示する場合は、ShellHelpers.cs を気にする必要はありません。または、必要に応じて、以下のコードをコピーすることもできます。それに応じていくつかの使用法を追加する必要がある場合があります。画像がない場合でも実行できます。ああ、APP_ID も設定する必要があります (一意性を表す const 文字列のみ)。

private const String APP_ID = "Microsoft.Samples.DesktopToastsSample";

using Windows.UI.Notifications;
using Windows.Data.Xml.Dom;
using System.IO;


// Get a toast XML template
XmlDocument toastXml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastImageAndText04);

// Fill in the text elements
Windows.Data.Xml.Dom.XmlNodeList stringElements = toastXml.GetElementsByTagName("text");
for (int i = 0; i < stringElements.Length; i++)
{
    stringElements[i].AppendChild(toastXml.CreateTextNode("Line " + i));
}

// Specify the absolute path to an image
String imagePath = "file:///" + Path.GetFullPath("toastImageAndText.png");
Windows.Data.Xml.Dom.XmlNodeList imageElements = toastXml.GetElementsByTagName("image");
imageElements[0].Attributes.GetNamedItem("src").NodeValue = imagePath;

// Create the toast and attach event listeners
ToastNotification toast = new ToastNotification(toastXml);
//toast.Activated += ToastActivated;
//toast.Dismissed += ToastDismissed;
//toast.Failed += ToastFailed;

// Show the toast. Be sure to specify the AppUserModelId on your application's shortcut!
ToastNotificationManager.CreateToastNotifier(APP_ID).Show(toast);
于 2013-08-16T08:31:30.800 に答える