メモ
NotifyIcon
とFileSystemWatcher
のイベントをRegister-ObjectEvent
でsubscribeIcon.ExtractAssociatedIcon
とSystemIcons
のアイコンを使用
使い捨てスクリプト
デスクトップにファイルを作成したとき、通知領域にファイルのアイコンを表示する。
ショートカットなどの新規作成時にtmpファイルを拾うけど気にしない。
# PowerShell 5.1, Windows 11 (2023年11月頃) Set-StrictMode -Version Latest Add-Type -AssemblyName System.Drawing, System.Windows.Forms $filePath = $null $ntf = [System.Windows.Forms.NotifyIcon]::new() $ntf.Icon = [System.Drawing.SystemIcons]::Information $ntf.Text = "パスの末尾が表示されます" $ntf.Visible = $true Register-ObjectEvent -InputObject $ntf -EventName "Click" -Action { Set-Clipboard $filePath $ntf.Icon = [System.Drawing.SystemIcons]::Information $ntf.Text = "パスの末尾が表示されます" } $watcher = [System.IO.FileSystemWatcher]::new() $watcher.Path = "${env:USERPROFILE}\Desktop" $watcher.Filter = "*" $watcher.IncludeSubdirectories = $true $watcher.NotifyFilter = [System.IO.NotifyFilters]::FileName Register-ObjectEvent -InputObject $watcher -EventName "Created" -Action { ([ref]$filePath).Value = $EventArgs.FullPath $text = $filePath if ($text.Length -gt 63) { $text = $text.Substring($text.Length - 63) } try { $ntf.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon($filePath) } catch { $ntf.Icon = [System.Drawing.SystemIcons]::Error } try { $ntf.Text = $text } catch { $ntf.Text = "最大文字数を超えています" } }