home > 投稿 > php: スクリーンショットはブラウザだけじゃない
2008/07/02

php: スクリーンショットはブラウザだけじゃない


パワポとかのスクリーンショット。完動させるのがちょっと先になりそうなので、メモとして書いておきます。

windows 上の php では imagegrabwindow というスクリーンショット用の関数が使えます。これにはウインドウハンドルが必要なので、DynamicWrapper ごしに WindowsAPI をたたいて取得します。以下は COMオブジェクトから、パワポと、DynamicWrapper を使ってスクリーンショットを得るサンプルです。

1. DynaWrap (DynaCall) をダウンロード→解凍して MAKE.BAT 実行。

2. Windows を設定 (phpがスクリーンショットするのを許可させる)
サービス > Apache > プロパティ > ログオン > 「デスクトップとの対話をサービスに許可」をチェック

Apache > 再起動

<?

$f	= 'C:\xampp\htdocs\www\Garage\test.ppt';
$title	= "Microsoft PowerPoint - [test.ppt]";

$app = new COM("Powerpoint.Application");
$app->Visible = True;
$app->Presentations->Open($f);
$app->Left	= 0;
$app->Top	= 0;
$app->Width	= 800;
$app->Height	= 600;
sleep(5);
$wrap	= new COM("DynamicWrapper");
$wrap->Register("USER32.DLL", "FindWindow", "i=ss", "f=s", "r=h");
$handle	= $wrap->FindWindow(null,$title);
$im	= imagegrabwindow($handle,0);
imagepng($im, "shot.png");
$app->Quit();

?>

先にいっとかないと、と思ったんだけど、パワポ、エクセル、ワードでドキュメントの開き方をはじめコントロール方法が違います。詳しくはそれぞれアプリケーションを開いて「Alt+F11」→「F2」。見てもらえばわかると思いますがスクリーンショットじゃなくてもいろいろできそうな感じです。

追記:書いている最中にみつけたんだけど、W32api関数っていうのも使えそう

トラックバックURL

http://faces2.bascule.co.jp/mt/mt-tb.cgi/563

コメントを投稿

(コメントには承認が必要になることがあります。承認されるまではコメントは表示されません。)