振り返ると恥ずかしくなるのが私の歴史。そのときは真面目に書いていた訳でね。そんな今の私を書いていく。2009-05-30Javaで定期画面キャプチャアプリを作るjava.awt.Robotを使えば簡単にスクリーンキャプチャを取れるようなので、簡単なアプリを作ってみた。{e.printStackTrace();}}}これを実行すると、下記画像ファイルが作成される。それはモニタサイズを1280*800固定にしているところ。自分用だから困ることはないけど気持ち悪い。解決方法を検索してみると、「【Java】モニタ解像度に合わせてフォームを最大化するサンプル。【Swing】」というページにGraphicsEnviromentクラスを利用するとうまくいくことが書かれていた。env.getMaximumWindowBounds();この方法でRectangleインスタンスを取得した場合の画像は次のようになる。タスクバーが見えない・・・。getMaximumWindowBoundsというメソッド名から推測すると、タスクバー部分を除外した範囲を取得するメソッドなのかな。便利だけど、タスクバーをキャプチャーできなければ、要件を満たせない。やりたいことは、画面キャプチャを定期的に取得しておいて、「何時何分に自分が何をしていたか」をあとで知りたいということ。工数管理するための材料が欲しいということ。タスクバーは大事な判断材料なので妥協できない。そこでまた解決方法を検索したのだけど、簡単だった(そりゃそうだよね)。java.awt.Toolkitという超基本クラスらしきものがあり、そのgetScreenSize()メソッドで取得できるとのこと。Rectangleインスタンスを取得するコードは次のようになる。Rectangle(Toolkit.getDefaultToolkit().getScreenSize());まずデフォルトのToolkitを取得しているが、デフォルトというのはプラットフォーム固有という意味だそうだ。getScreenSize()メソッドで取得できるサイズは、マルチモニタの場合は主モニタになる。スクリーンサイズを返します。複数のディスプレイを持つシステムでは、主ディスプレイが使用されます。http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Toolkit.html#getScreenSize()マルチモニタの場合の各モニターサイズの取得方法はAPIによると次のようになるみたい。物理的に2台のモニタを接続していれば、GraphicsDevice配列の要素数は2になるはず。実際、私のディスプレイは1台だから要素数が1になった。GraphicsConfiguration配列の要素数は6個になった。すべてのサイズは1280×800になっていた。その他の設定が異なるのかな。API読んでも理解できなかった。実現したいことは済んでるから放っておくか。あとは、定期的に実行されるようにタイマーを作るだけ。不慣れだけど、次のようになった。ポイントTimerとTimerTaskを使用して定期的にキャプチャタスクが動くようにした。出力フォルダとキャプチャ間隔(秒数)は引数で指定。出力ファイルは「引数で指定したフォルダ\日付(yyyyMMdd)\capture_日付(yyyyMMdd)_時間(HHmm).jpg」。HH:mm:ss」形式の日時を埋め込んだ。停止方法は「java」コマンドの場合はCtrl+C、「javaw」コマンドの場合はタスクマネージャからプロセスの停止クラス名は、TimerTaskを継承したのでScreenCaptureTaskに変更した。JDK6.0でコンパイル。1.4で動くかどうかは不明。画像に日付を入れる(背景との調整が面倒。yyyyMMddのディレクトリを作成する。{e.printStackTrace();}}}技術的な不明点は、画像に日時を埋め込んだところ。最初は青で文字を埋め込んだんだけど、キャプチャした画像が黒だと黒と青の相性が悪くて文字が読めなかった。文字の背景色を設定しようと思ったのだけど、そんな設定は見つからない。文字とは別に背景色を設定。背景色と文字を独立して設定しているから座標の指定が面倒だった。簡単に設定できないのかなあ?まあでも望んでいたものができたので、その点は解決した。21:36Javaで定期画面キャプチャアプリを作るTweet関連記事2012-02-27JavaでGIFアニメの抜き出しGIFアニメの文字列をOCRで抜き出すために分割処理が必要になっ...2009-05-02Javaでダウンキャストするとコンパイルエラーになる子クラスがある罠アクセス修飾子に関すること。Commons使ってみた。ja...2007-02-11Swingコードを書いてみる。はてなブログPro金沢で2015年4月からフリーランスをしています。RubyやJavaによるWebシステムの開発が好きですが、最近はLinux周りを触ることが多くなってきています。一緒にやっていけるプログラマを募集中です。場所はどこでもOKです。(1)はてなブログをはじめよう!mota5さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。