Win10では画面キャプチャ&ファイル保存してくれる以下のショートカットキーがあるので、もはやこのページの内容は不要となってしまった。(❖:Windowsロゴキー)
- アクティブ画面キャプチャ+ファイル保存:❖+Alt+PrtSc
- 全画面キャプチャ+ファイル保存 :❖+PrtSc
- 指定範囲キャプチャ(ファイル保存しない) :❖+Shift+S
- クリップボード履歴 :❖+V
※これらのショートカットキーはWin10のバージョンによって使えないものがあるようです。
話を戻して・・・
■PowerShellソース
$path = "c:\tmp\" # 出力先
$file = "Cap_{0:000}.png" # {0:000} 0番目の引数を3桁の0埋め数字とする。
Add-Type -A System.Windows.Forms # このセッションに型を追加。
[Windows.Forms.Screen]::PrimaryScreen.Bounds | # ディスプレイサイズを取得し、
% {[Drawing.Bitmap]::New($_.Width, $_.Height)} | # そのサイズのBitmapデータ生成。
sv b # Set-Variable 変数への代入。bにBitmapオブジェクトを代入。
[Drawing.Graphics]::FromImage($b).CopyFromScreen(0, 0, $b.Size) # 描画オブジェクトで画面キャプチャして、Bitmapデータへ反映。
md -f $path # フォルダ作成。-f:force 既に存在する場合エラーを抑止。
1..1000 | # 1~1000まで
% { $path + $file -f $_ } | # 繰り返し、フォーマット。c:\tmp\Cap_001.pngなどに変換。
? { (Test-Path $_) -eq $false } | # その内、ファイルが存在しないパスのみを取得。
select -F 1 | # 最初の1件のみにフィルタして、
% { $b.Save($_) } # そのパスにBitmapデータをファイル保存。
Newスクリーンショット:上記に少し機能追加したもの。
■ショートカットキー
Win7以降ならタスクバーにピン留めしてWindowsキー+1とか2とか(タスクバーの左からのピン留め位置。ピン留めした位置が1番左なら、Windowsキー+1)。
■フリーソフトが使用できない職場なので、 WinShotも使用できない。仕方なく PowerShellでスクリーンキャプチャ&ファイル(画像ファイル)保存する。ちなみに全画面で保存される。
■Win7でも動くはず。
Download
上記のリンクからダウンロードした場合は、ファイルを右クリックしてプロパティを選択し、「ブロックの解除」が必要な場合がある。
上記のDownloadと下記のコードは同じもの。
■powershell画面を非表示にする。
1. 該当のps1ファイルを右クリックし、ショートカットの作成。
2. 作成したショートカットを右クリックし、プロパティ。
3. リンク先に【powershell.exe -w Hidden -ep RemoteSigned -c "C:\Users\root\Desktop\cap\cap.ps1"】を入力し、【OK】ボタン押下。パスは読み替えること。-ep RemoteSignedを指定した場合、後述のpowershellの有効化は不要。
4. ショートカットファイルをタスクバーにD&D。
上記手順後、タスクバーのpowershellアイコンをクリックするとpowershell画面非表示の状態でキャプチャされる。
2. 【Set-ExecutionPolicy RemoteSigned】を入力。(Set-Ex入力後Tabで補完、Re入力後、Tabで補完)
■ショートカットキーの登録。(制限事項有り※)
■フリーソフトが使用できない職場なので、 WinShotも使用できない。仕方なく PowerShellでスクリーンキャプチャ&ファイル(画像ファイル)保存する。ちなみに全画面で保存される。
■Win7でも動くはず。
Download
上記のリンクからダウンロードした場合は、ファイルを右クリックしてプロパティを選択し、「ブロックの解除」が必要な場合がある。
上記のDownloadと下記のコードは同じもの。
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$filePath = "c:\tmp\Cap_{0:000}.png"
$fileKind = [System.Drawing.Imaging.ImageFormat]::Png
#$fileKind = [System.Drawing.Imaging.ImageFormat]::Jpeg
#$fileKind = [System.Drawing.Imaging.ImageFormat]::Gif
#$fileKind = [System.Drawing.Imaging.ImageFormat]::Bmp
# スクリーンキャプチャして、Graphicsオブジェクトを生成
$rect = [System.windows.forms.Screen]::PrimaryScreen.Bounds
$bitmap = New-Object System.Drawing.Bitmap($rect.Width, $rect.Height)
$graphics = [System.Drawing.Graphics]::FromImage($bitmap)
$zero = New-Object System.Drawing.Point(0, 0)
$graphics.CopyFromScreen($zero, $zero, $bitmap.Size)
# ファイル名を決定するために、存在しないファイルになるまでループ
$i = 0
do
{
$path = $filePath -F $i # 文字列フォーマット
$i++
} while (Test-Path $path);
# ファイル保存
$bitmap.Save($path, $fileKind)
■powershell画面を非表示にする。
1. 該当のps1ファイルを右クリックし、ショートカットの作成。
2. 作成したショートカットを右クリックし、プロパティ。
4. ショートカットファイルをタスクバーにD&D。
上記手順後、タスクバーのpowershellアイコンをクリックするとpowershell画面非表示の状態でキャプチャされる。
■powershell 有効化
1. Winキー押下し、【powershell】と入力し、表示されたWindows PowerShellを右クリックし、「管理者として実行」を選択。
2. 【Set-ExecutionPolicy RemoteSigned】を入力。(Set-Ex入力後Tabで補完、Re入力後、Tabで補完)
■ショートカットキーの登録。(制限事項有り※)
- 上記のコードを保存または、リンクからDownload。
例)c:\bat\スクリーンキャプチャ.ps1 - 保存したファイルを右クリック-「ショートカットの作成」を選択。
- 作成したショートカットファイルを選択し、Alt + Enterキー。
- 「リンク先」欄の先頭にpowershell を追加。
例1)powershell C:\bat\スクリーンキャプチャ.ps1
例2)C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe C:\bat\スクリーンキャプチャ.ps1 - 「ショートカットキー」欄を選択。
- 使用したいショートカットキーを押下。
例)Ctrl + Alt + P。 - 「実行時の大きさ」欄を「最小化」に変更。
- Winロゴキー + Rキー押下。
- shell:startupを入力し、Enterキーを押下。
- エクスプローラが開くので、上記のショートカットファイルを移動。
- OS再起動。
※このショートカットキーの登録の場合、アクティブウィンドウが変更されてしまうため、ツールチップなどの一部の表示がキャプチャできないことがある。
ありがとうございます、とっても参考になりました!
返信削除