目次

SendKeysメソッドを利用してスクリーンキャプチャを取得する - C#

SendKeysメソッドを利用してスクリーンキャプチャを取得するコードを紹介します。

概要

.NET Frameworkでは こちらの記事で紹介しているCopyFromScreenメソッドを利用する以外に、PrintScreenキーをプログラムから送信しスクリーンキャプチャを取得する方法もあります。

コード

private void button2_Click(object sender, EventArgs e)
{
  //SendKeys.SendWait("%{PRTSC}");//アクティブウィンドウをスクリーンキャプチャする場合
  SendKeys.SendWait("^{PRTSC}");//全画面をスクリーンキャプチャする場合

  IDataObject data = Clipboard.GetDataObject();
  if (data.GetDataPresent(DataFormats.Bitmap)) {
    Bitmap bmp = (Bitmap)data.GetData(DataFormats.Bitmap);
    bmp.Save(@"c:\data\screen3.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
  }
}

説明

SendKeys.SendWait("^{PRTSC}");
でプログラムからキーを送信します。 "^{PRTSC}"は Ctrl+PrintScreen キーとなります。

IDataObject data = Clipboard.GetDataObject();
にてクリップボードからデータを取得します。

if (data.GetDataPresent(DataFormats.Bitmap)) {
にてクリップボードから取得したデータがビットマップ形式か判定し、ブットマップ形式であるならば

Bitmap bmp = (Bitmap)data.GetData(DataFormats.Bitmap);
bmp.Save(@"c:\data\screen3.bmp", System.Drawing.Imaging.ImageFormat.Bmp);
にて画像データを取り出し、c:\dataに screen3.bmpという名前で保存します。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-04
作成日: 2010-10-28
iPentec all rights reserverd.