キャプチャー範囲を指定する方法
上記の方法は、デスクトップ全体をキャプチャーするものだ。しかし、範囲を指定したいこともあるだろう。もし、キャプチャする範囲の座標がわかっているなら、前記のコマンドを一部変更して利用できる。たとえば「(100,200)-(300,500)」の範囲をキャプチャしたいのであれば、
$rect=[Drawing.Rectangle]::FromLTRB(100,200,300,500)
として範囲(Rectagleオブジェクト)を作る。次にビットマップを以下のように作成する。
$bmp=New-Object System.Drawing.Bitmap $rect.width,$rect.height
その後、
([System.Drawing.Graphics]::FromImage($bmp)).CopyFromscreen($rect.left,$rect.top,0,0,$bmp.size)
として実行する。あとは、同じように$bmpを保存すればよい。
しかし、自分でマウスを使って範囲を指定してキャプチャしたいこともあるだろう。この場合には「ms-screenclip:」をURI起動したのち、クリップボードを保存すればよい。具体的には、
start "ms-screenclip:"
$bmp=[System.Windows.Forms.Clipboard]::GetImage()
とすれば、$bmpにビットマップ画像が入る。あとは、同じ方法で画像を保存すればよい。1行目のこのURI起動は「Win+Shift+S」キーを押したのと同じもの。キーを押す操作をコマンドラインから起動するだけだ。実行後、デスクトップの上部にメニューが出て、ここで切り取る対象(矩形、自由形状、ウィンドウ、デスクトップ全体)を切り替えることができる。キャプチャーをするとPowerShell側に制御が戻る。
デスクトップのキャプチャーをコマンドラインからするのはそれほど難しいことでもない。ウィンドウのキャプチャーは、その位置やサイズが明らかなら今回紹介した「キャプチャ範囲を指定する方法」で可能だが、残念なことにWindows PowerShellには、ウィンドウの位置やサイズを調べるためのコマンドがない。このためWin32APIを呼び出す必要がある。決して難しくはないのだがコマンドラインというよりは、プログラムになってしまうため、いろいろと前提知識が必要になる。これについてはまた別の機会にさせていただきたい。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ











