こういうのを見かけたので、Windows環境でもできないか考えてみた。
で、どうせやるならアクティブウィンドウをキャプチャして何らかの動画作成の素材にできないかな、と思考を発展。
用意するもの:IrfanView、Perl
基本的な考え方
IrfanViewはコマンドラインに対応しているので、それを利用して画面をキャプチャ。
ただし、IrfanView自身にはファイル番号を整理するといった機能はなく、
何らかのスクリプト(自分はPerlを使用)でカウントさせて定期的に呼ばせることで連番ファイルを作成。
作ったスクリプト(Autocapture.pl)
for ($count = 1 ; $count ; $count ++){
#ファイル名の設定。変数は正の方向に無限に伸びていくので実質的に無限ループ
#正確にはオーバーフロー起こすまでの有限だけどそこまで撮らないでしょう
my $return_value = system “i_view32.exe /capture=2 /convert=V:\\capture\\” . sprintf(“%06d”,$count) . “.jpg”;
#/capture=2の数値を変えると保存範囲が変わります。操作の都合上使用するのは0/2/3のいずれかになるでしょう。
#0 = 画面全体
#1 = current monitor, where mouse is located
#2 = アクティブなウィンドウ
#3 = アクティブなウィンドウ(クライアント領域:外枠を除いた状態)
#4 = 範囲を指定(毎回範囲を指定することになります)
#5 = object selected with the mouse
#6 = start in capture mode (can’t be combined with other commandline options)
#/convertで保存場所を指定(この場合「V:\capture\(6桁の数字).jpg」)。
#なお、指定フォルダはあらかじめ作っておかないとエラーが出ます。
sleep 5;
#画面を撮影する間隔を指定(この場合は5秒毎)
}
あとは以下のコマンドをコマンドプロンプトで打つかバッチファイルに書いてそれを起動させるかするだけ。
perl Autocapture.pl
実際のところ、バッチ側で変数と繰り返し処理できるならPerlすら不要なんですけどね。
Comments