LoginSignup
2
1

More than 1 year has passed since last update.

BurnToastを使ってWindows10で簡単にトースト通知を行う

Last updated at Posted at 2021-02-05

記事の概要

Windows10はOS標準の通知方法としてトースト通知というものを使用しています。

ちゃんと実装しようと思うと面倒くさいため、ここではpowershellのモジュールとして公開されているBurnToastを使用して簡単にトースト通知を実現する方法を記載します。

BurnToastとは

Windows10でトースト通知を行うためのpowershellのモジュールです。
非常に簡単な表現でトースト通知を行うことが出来ます。

導入方法などは公式ドキュメントを参照ください。

簡単な使用例

好きな文字列を通知の中に入れる

Import-Module BurntToast

$toastParams = @{
    Text = "ここへ好きな文字列を記入"
}

New-BurntToastNotification @toastParams

上記を実行すると、以下の画像のような通知が出力されます。

toast_notification_ex1.png

好きな文字列+好きなタイトルを通知の中に入れる

Import-Module BurntToast

$toastParams = @{
    Text = "ここへ好きな文字列を記入"
    Header = (New-BTHeader -Id 1 -Title "タイトル")
}

New-BurntToastNotification @toastParams

上記を実行すると、以下の画像のような通知が出力されます。

toast_notification_ex2.png

好きな文字列+好きなタイトル+好きなリンク先を通知の中に入れる

Import-Module BurntToast

$url = "https://www.google.com"

$toastParams = @{
    Text = "ここへ好きな文字列を記入"
    Header = (New-BTHeader -Id 1 -Title "タイトル")
    Button = (New-BTButton -Content 'リンク' -Arguments $url)
}

New-BurntToastNotification @toastParams

上記を実行すると、以下の画像のような通知が出力されます。
リンクボタンをクリックすると指定したリンク先(ここではwww.google.com)へ遷移します。
C:\hogehoge\hugahugaのように、フォルダパスを指定すればエクスプローラーが指定したフォルダを開きます。

toast_notification_ex3.png

ちょっとだけ便利かもしれない使用例

TODOをテキストファイルに記載しておいて、それをトースト通知させてみました。

todo.txt
2021/02/11    10:15    参考書を読む
everyday      23:45    筋トレ

1番左に日付、真ん中に時間、3番目にTODOの内容を書いています。
この日付、時間に通知を行います。

todo.ps1
Import-Module BurntToast


while (1) {
    $today = Get-Date -Format "d"
    $everyday = "everyday"
    $time = Get-Date -UFormat "%H:%M"

    # todoファイルの内容から現在時刻で通知するべきtodoを取得
    $allTodoList = (Get-Content "C:\todo.txt")
    $todayTodoList = $allTodoList | Select-String -Pattern $today | Select-String -Pattern $time
    $everydayTodoList = $allTodoList | Select-String -Pattern $everyday | Select-String -Pattern $time

    if ($todayTodoList) {
        $toastParamsTodayTodoList = @{
            Text = $todayTodoList
            Header = (New-BTHeader -Id 1 -Title "今日のTODO")
        }

        New-BurntToastNotification @toastParamsTodayTodoList
    }

    if ($everydayTodoList) {
        $toastParamsEverydayTodoList = @{
            Text = $everydayTodoList
            Header = (New-BTHeader -Id 1 -Title "毎日のTODO")
        }

        New-BurntToastNotification @toastParamsEverydayTodoList
    }

    # todo.txtに1分単位で通知時刻を記載しているため、ループは1分間隔で実行する
    Start-Sleep -Seconds 60
}

おわりに

BurnToastに実装されている機能はまだまだたくさんあります。
ここに書けなかった部分についてはまた改めてまとめようと思います。

参考

BurnToast
Using Toast notifications in Powershell

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1