|
.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ジャパン
- データ・コレクションをバインドするには? (2013/5/16)
Windowsストア・アプリやWindows Phone 8アプリで、データのコレクションをコントロールにバインドする方法を解説する - コントロール同士をデータ・バインドするには? (2013/5/9)
データ・バインドの仕組みを使うと、データ・クラスだけでなく、コントロール同士もバインドできる。その方法を説明する - 自動ビルドを実現するビルド・サービス環境の構築 (2013/5/8)
ソース・コードの管理環境の構築の次は、自動ビルド環境を構成しよう。Team Foundation Server Expressの機能を活用して簡単に構築 - ライブラリとしてのWindowsランタイム (2013/4/26)
WinRTは「Windowsストア・アプリのためだけの実行環境とライブラリ」ではない?! デスクトップ・アプリからWinRTを使う方法を解説する
|
|
キャリアアップ
- - PR -
イベントカレンダー
- - PR -
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
トレンド総研、会社員500名を対象に「仕事とソーシャルメディアに関する調査」を実施
生活者の意識・実態に関する調査をおこなうトレンド総研は5月21日、会社員500名を対象に...
テクノロジーが変えるわたしたちの振る舞い――デジタルマーケティング時代のマーケターの責務とは
いまや、わたしたちのポケットには全世界の情報が集まっています。テクノロジーがそんな...
ソーシャルメディア対応CRMと従来型CRM、3つの違いとは?
現在中小企業のビジネスコミュニティの中で、「最新型のソーシャルCRM対従来型CRMのどち...



