キャプチャー範囲を指定する方法
上記の方法は、デスクトップ全体をキャプチャーするものだ。しかし、範囲を指定したいこともあるだろう。もし、キャプチャする範囲の座標がわかっているなら、前記のコマンドを一部変更して利用できる。たとえば「(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を呼び出す必要がある。決して難しくはないのだがコマンドラインというよりは、プログラムになってしまうため、いろいろと前提知識が必要になる。これについてはまた別の機会にさせていただきたい。
本記事はアフィリエイトプログラムによる収益を得ている場合があります

この連載の記事
-
第525回
PC
6月以降「PCが起動不可能に?」と間違った騒がれ方をしている原因の「セキュアブート」とは? -
第524回
PC
Windows Insider Programが変化 チャンネルが3つになって整理される -
第523回
PC
AI傾倒に一息入れて、既存のWindowsの改良を宣言するMicrosoft タスクバーを画面の上下左右に移動可能に!? -
第522回
PC
Windowsでも完全キーボード操作派は注目! PowerToysのコマンドパレット -
第521回
PC
Windowsでアプリをインストールしたときに警告が表示する「Defender SmartScreen」と「Smart App Control」 -
第520回
PC
WindowsターミナルのPreview版 v1.25では「操作」設定に専用エディタが導入 -
第519回
PC
「セキュアブート」に「TPM」に「カーネルDMA保護」、Windowsのセキュリティを整理 -
第518回
PC
WindowsにおけるUAC(ユーザーアカウント制御)とは何? 設定は変えない方がいい? -
第517回
PC
Windows 11の付箋アプリはWindowsだけでなく、スマホなどとも共有できる -
第516回
PC
今年のWindows 11には26H2以外に「26H1」がある!? 新種のCPUでのAI対応の可能性 -
第515回
PC
そもそも1キロバイトって何バイトなの? - この連載の一覧へ











