コンソールプログラムからトースト通知をするサンプル †コンソールプログラムでトースト通知を実現するサンプルコードがネット上にありましたが ''本資料では、トースト通知が表示されイベントが戻ってきてコンソールプログラムが終了するようになっています。 GitHubに公開 †本コンソールプログラムのプロジェクトは以下のURL(GitHub)に公開してあります。 動作確認&開発環境 †
参考記事 †
コンソールプログラムでトースト通知プロジェクトを作る手順 †コンソールプログラムからトースト通知をするプロジェクトを以下の手順で作成します。 プロジェクトの作成 †
WinRTを参照できるようにする †
必要な参照を追加 †
以上の操作でプロジェクトの作成は完了です。 コンソールアプリケーションによるトースト通知サンプルコード †以下のサンプルコードをProgram.csに適用してください。 本コンソールプログラムのプロジェクトは以下のURL(GitHub)に公開してあります。 using System; using System.IO; using System.Threading; using System.Threading.Tasks; using Windows.Data.Xml.Dom; using Windows.UI.Notifications; namespace Toast4U { class Program { static void Main(string[] args) { if (!(args.Length == 2 || args.Length == 3)) { Usage(); return; } if (args.Length == 3 && !(File.Exists(args[2]))) { Console.Error.WriteLine("{0} image file not found!", args[2]); return; } Toaster toaster = new Toaster(); Task.Run(() => toaster.SendToastNotification(args)); while (toaster.Finished == false) { Thread.Sleep(10); } } static void Usage() { string command = Path.GetFileName(Environment.GetCommandLineArgs()[0]); Console.WriteLine("Usage: {0} title message [image]", command); Console.WriteLine(" e.g.: {0} INFOMATION \"HELLO WORLD\"", command); Console.WriteLine(" e.g.: {0} INFOMATION \"HELLO WORLD\" c:\\path\\to\\image.png", command); } } class Toaster { private ToastNotification _toast; public bool Finished { get; private set; } = false; public void SendToastNotification(string[] args) { string Toast = ""; string title = args[0]; switch (args.Length) { case 2: // Title and Message XML Toast = String.Format( "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">{0}</text></binding></visual></toast>" ,args[1]); break; case 3: // Title, Message and Image XML Toast = String.Format( "<toast><visual><binding template=\"ToastImageAndText01\"><image id=\"1\" src=\"{1}\"/><text id=\"1\">{0}</text></binding></visual></toast>" , args[1], args[2]); break; default: // unknown case Toast = "<toast><visual><binding template=\"ToastText01\"><text id=\"1\">unknown</text></binding></visual></toast>"; break; } XmlDocument toastTemplate = new XmlDocument(); toastTemplate.LoadXml(Toast); // Create the toast and attach event handlers. _toast = new ToastNotification(toastTemplate); _toast.Dismissed += ToastNotificationComplete; _toast.Activated += ToastNotificationComplete; _toast.Failed += ToastNotificationComplete; ToastNotificationManager.CreateToastNotifier(title).Show(_toast); } private void ToastNotificationComplete(ToastNotification sender, object args) { Finished = true; } } } Toast4Uの使い方 †上記のプロジェクトをGitHubからダウンロードするか、作成したプロジェクトをビルドしてください。 引数なしで Toast4U.exe を起動すると使用方法が出力されます。 D:\Toast4U\Toast4U\bin\Release>Toast4U.exe Usage: Toast4U.exe title message [image] e.g.: Toast4U.exe INFOMATION "HELLO WORLD" e.g.: Toast4U.exe INFOMATION "HELLO WORLD" c:\path\to\image.png 実際にタイトル、メッセージと画像を表示するコマンド例を以下に記します。 タイトル、メッセージ表示 †
タイトル、メッセージ、イメージ表示 †適当なイメージファイルを準備してください。
その他 †トースト通知に使用したXMLですが、ToastTemplateType.ToastText01, ToastTemplateType.ToastImageAndText01を参考にしました。
以上、コンソールアプリケーションからトースト通知を送信し完了するまで待つサンプルコードでした。 |