macOSの場合、画面キャプチャをするとすぐにデスクトップ上に画像ファイルが保存されるんだけど、Windowsではクリップボードに保持されるのみ。
クリップボード上の画像をファイル化するために、ペイントを立ち上げてペーストして、、、というのがめんどくさいと感じていた。
なので、batでクリップボード上の画像をpngに保存する機能を作ってみた。
本当はクリップボード上に画像が無い場合は、「Winキー+Shift+s」を呼び出したいのだが、「Winキー押下」はPowerShellからは呼び出せないみたいなので、「PrtScキー押下」にしている。SnippingToolの起動も良いような気もするけど。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
@powershell -windowstyle hidden -NoProfile -ExecutionPolicy Unrestricted "&([ScriptBlock]::Create((cat -encoding utf8 \"%~f0\" | ? {$_.ReadCount -gt 2}) -join \"`n\"))" %* @exit /b Add-Type -AssemblyName System.Windows.Forms; [System.Drawing.Image]$clipboardImage = [Windows.Forms.Clipboard]::GetImage(); if ($clipboardImage -eq $null) { # クリップボード上に画像が無い場合は SnippingTool を起動 # Start-Process -FilePath "C:\WINDOWS\system32\SnippingTool.exe"; # クリップボード上に画像が無い場合はフルスクリーンをキャプチャ [Windows.Forms.Sendkeys]::SendWait("{PrtSc}"); Start-Sleep -Milliseconds 250 $clipboardImage = [Windows.Forms.Clipboard]::GetImage(); } if ($clipboardImage -ne $null) { # 名前をつけて、batと同じ階層に保存 [String]$fileName = (Get-Date).ToString("yyyyMMdd_HHmmss") + ".png"; $clipboardImage.Save($fileName); } |
◆ソース
https://github.com/umhr/clipboard2PNG/
◆参考
PowerShellでキー入力の自動化
https://systemage.co.jp/blog/?p=1662
PowerShellで日付書式にカスタム書式パターンを指定する
https://tech.guitarrapc.com/entry/2013/02/09/030226
「Snipping Tool」は廃止へ ~「Windows 10 RS5」でスクショの取り方はこうなる!
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1131054.html