少し時間のかかる作業をスクリプトに行なわせたとき、終了したら適当に通知しておいてほしいことがある。ただ、別の作業をしているので、いきなりメッセージボックスが画面に現れるというのも問題が生じる。
Windows 10でそういうときに便利なのが、トースト通知だ。トースト通知は、表示したときにフォーカスを持たないため作業を邪魔しないし、アクションセンターに履歴が残るため、あとで確認もできる。
Windowsのトースト通知は、ToastNotificationと呼ばれ、かつてはUWPアプリケーションだけが利用できたが、その後、Windows PowerShellからも利用できるようになった。なお、通知の表示時間などトースト通知に関する設定については、以下の記事を参照してほしい。
●Windows 10で結構表示される通知を整理してアクションセンターをスッキリ
https://ascii.jp/elem/000/001/114/1114188/
まずは簡単なところから試してみる
以下のリストは、Windows PowerShellからトースト通知をするスクリプトだ。残念ながら、このスクリプトはPowerShell 7では動作しない。不可能ではないのだが、ちょっと面倒な作業が必要になるため、記事での掲載は諦めた。少なくともWindows 10ならばWindows PowerShellは標準で含まれているので、そちらで試してほしい。
$AppId = "{1AC14E77-02E7-4E5D-B744-2EB1AE5198B7}\WindowsPowerShell\v1.0\powershell.exe";
$template=
[Windows.UI.Notifications.ToastNotificationManager,Windows.UI.Notifications, ContentType = WindowsRuntime]::GetTemplateContent(
[Windows.UI.Notifications.ToastTemplateType, Windows.UI.Notifications, ContentType = WindowsRuntime]::ToastText01);
$msg="ASCII.JP`nWindows Info";
$template.GetElementsByTagName("text").Item(0).InnerText=$msg;
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier($AppId).Show($template);
5行目の$msgを設定しているダブルクオートの中身を書き換えると表示されるメッセージを書き換えることができる。ダブルクオートの中にある「`n」は、PowerShellでの「改行文字」である。試すだけなら、Windows PowerShellを起動して、このリストをコピーして貼り付ける。繰り返し実行したいときには、5行目のように$msgに表示させたい文字列を指定して、6行目、7行目を再実行すればよい。
簡単に仕組みを解説する
とはいえ、中身もわからずに使うのもキモチが悪いだろう。仕組みには興味がないというのであれば、ここは読み飛ばしてかまわない。ということで簡単に解説しておく。
まず、トースト通知を使うには、アプリケーションID(AppIDやAUMIDなどと呼ばれる)が必要になる。これは、Windows PowerShellのAppIDを使う(リスト1行目)。Windows PowerShellを使う限り、ここは書き換える必要はない。
2~4行目は、$templateという変数にトースト通知のテンプレートを取得しているもの。クラス指定が長くて面倒そうだが、実際には「GetTemplateContent」というメソッドに、「ToastText01」という値を渡しているだけだ。このテンプレートについては、Microsoftの以下のページにサンプルがある。
●The toast template catalog
https://docs.microsoft.com/en-us/previous-versions/windows/apps/hh761494(v=win.10)
クラス指定が長いのは、それがWinRT側のクラスだからである。
GetTemplateContentの戻り値を受け取る変数$templateは、
<toast>
<visual>
<binding template="ToastText01">
<text id="1"></text>
</binding>
</visual>
</toast>
というXMLデータになっていて、「<text id="1">」と「</text>」で挟まれた部分にメッセージを書き込む必要がある。それが6行目だ。最後の7行目は、トースト通知を表示させるためのものだ。
なお、すでに画面にトースト通知があると、同じアプリからの通知は表示を待たされるので、何回も繰り返すときには、前の通知を消しておく必要がある。
この連載の記事
-
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る -
第421回
PC
進化しているPowerToys LANで接続したマシンでキーボード/マウス共有機能などが追加 -
第420回
PC
Windowsプレビュー版に搭載されたsudoを試す -
第419回
PC
Windows Insider Previewが変わって、今秋登場のWindows 11 Ver.24H2の新機能が見えてきた? -
第418回
PC
Windows 11のスマートフォン連携は新機能が追加されるなど、いまだ進化している - この連載の一覧へ