|
.NET TIPS アプリケーション画面のハードコピーを保存するには?デジタルアドバンテージ2004/05/07 |
![]() |
|
|
|
Windowsアプリケーションで画面のキャプチャ(画面のハードコピーの取得)を行い、それをファイルに保存する場合には、その機能を独自に実装する必要がある。もちろん画面キャプチャ・ソフトを使ってもよいし、[Alt]キー+[Print Screen]キーを利用してウィンドウのスクリーン・ショットをクリップボードにコピーし、それを画像処理ソフトなどにペースト(貼り付け)してから保存することも可能だ(これについてはWindows TIPS:「アクティブウィンドウだけをキャプチャする方法」で解説されている)。
しかし、後者の[Alt]キー+[Print Screen]キーによる方法をプログラムから実行することにより、画面キャプチャをファイルに保存するという機能を簡単にアプリケーションに追加することができる。このための具体的な手順は次のようになる。
- [Alt]キー+[Print Screen]キーを自分自身に送る
- クリップボードに格納されたキャプチャ画像を取得する
- 取得した画像をファイルに保存する
この手順のうち、2.と3.については「TIPS:クリップボードからデータを受け取るには?」と「TIPS:画像をファイルに保存するには?」で解説しているので、詳しくはそちらを参照していただきたい。
アプリケーションへのキーストロークの送信
アプリケーションへのキー入力の送信は、SendKyesクラス(System.Windows.Forms名前空間)のSendWaitメソッドを使用すればよい。このメソッドは、パラメータで指定されたキーストロークをアクティブなアプリケーションに送信し、それが処理されるまで待機する(これにより、ユーザーがアプリケーションに対してキー入力を行った場合と同等な状況を作り出すことができる)。
SendWaitメソッドのパラメータには、送信するキーストロークを文字列として記述する。[Print Screen]キーなどの特殊なキーは、“{PRTSC}”のように、あらかじめ定められたコードにより記述できる(コードの一覧はリファレンス・マニュアルのSendKeysクラスの項目に記載されている)。また、[Alt]キーとの組み合わせとして送信する場合には、そのコードの前に“%”を付ければよい。
よって、[Alt]キー+[Print Screen]キーの組み合わせをアプリケーションに送信するには、次のような記述となる*。
SendKeys.SendWait("%{PRTSC}");
| * プログラムからアプリケーションにキーを直接送信して画面キャプチャを行う場合には、[Print Screen]キーだけを送信しても、そのアプリケーション単体の画面キャプチャが行えるようである(全画面のキャプチャとはならない)。 |
画面キャプチャをファイルに保存するサンプル・プログラム
画面キャプチャ機能を追加したWindowsアプリケーションを実際に作成してみよう。ここでは、フォーム上に配置した[画面キャプチャ]ボタンが押された場合に、画面のハードコピーを「c:\screen.jpg」というファイル名のJPEGファイルとして保存するものとする。
まず、Visual Studio .NETでWindowsアプリケーションのプロジェクトを作成し、次の図のようにTextプロパティを「画面キャプチャ」に設定したButtonコントロールを適当な位置に配置する。キャプチャされたことが確認しやすいように、ここではボタン以外にもいくつかのコントロールをフォームに配置している。
![]() |
| [画面キャプチャ]ボタンと適当なコントロールを配置したWindowsフォーム |
次に、いま配置した[画面キャプチャ]ボタンをダブルクリックし、次のコードを記述する。
|
|
| [画面キャプチャ]ボタンをダブルクリックして記述するコード(C#) |
|
|
| [画面キャプチャ]ボタンをダブルクリックして記述するコード(VB.NET) |
プログラムを実行して[画面キャプチャ]ボタンを押せば、Cドライブのルート・ディレクトリに「screen.jpg」というJPEGファイルが作成されているはずだ。![]()
| カテゴリ:Windowsフォーム 処理対象:キーボード カテゴリ:Windowsフォーム 処理対象:クリップボード 使用ライブラリ:SendKyesクラス(System.Windows.Forms名前空間) 使用ライブラリ:Clipboardクラス(System.Windows.Forms名前空間) 使用ライブラリ:IDataObjectインターフェイス(System.Windows.Forms名前空間) 使用ライブラリ:DataFormatsクラス(System.Windows.Forms名前空間) 関連TIPS:クリップボードからデータを受け取るには? 関連TIPS:画像をファイルに保存するには? |
|
||||||||||||||||||||||||||||
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



