このページの本文へ

前へ 1 2 次へ

Windows Info 第327回

Windowsでコマンドラインから画面キャプチャーをする

2022年05月15日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

キャプチャー範囲を指定する方法

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

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン