WSLからWindowsに通知
PowerShell スクリプト
https://imihito.hatenablog.jp/entry/2018/08/22/224256
code:notify.ps1
param(
string$Prompt = 'メッセージ',
string$Title = '通知',
$CallBack = ''
)
Add-Type -AssemblyName System.Windows.Forms, System.Drawing
function Show-NotifyIcon {
param(
string$Prompt = 'メッセージ',
string$Title = '通知',
scriptblock$CallBack = {}
)
Windows.Forms.NotifyIcon$notifyIcon =
New-Object -TypeName Windows.Forms.NotifyIcon -Property @{
BalloonTipIcon = Windows.Forms.ToolTipIcon::Info
BalloonTipText = $Prompt
BalloonTipTitle = $Title
Icon = Drawing.SystemIcons::Information
Text = $Title
Visible = $true
}
# イベント定義
$notifyIcon.add_BalloonTipClicked( $CallBack )
int$timeout = 3 # sec
DateTimeOffset$finishTime =
DateTimeOffset::UtcNow.AddSeconds( $timeout )
$notifyIcon.ShowBalloonTip( $timeout )
# そのままだとイベントが走らない&すぐに消えてしまうので適当wait
while ( DateTimeOffset::UtcNow -lt $finishTime ) {
Start-Sleep -Milliseconds 1
}
$notifyIcon.Dispose()
}
$parameters = $MyInvocation.BoundParameters
$parameters.CallBack = scriptblock::Create( $CallBack )
Show-NotifyIcon @parameters
C:/Users/Foo/Desktop/notify.ps1 に配置するとする
$ /mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Sta -NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File c:/Users/Foo/Desktop/notify.ps1 "メッセージ" "タイトル"
-File に渡すファイルパスは powershell 側から見たパスなので /mnt/c/... ではなくなることに注意
#windows