クリップボードからデータを取得する クリップボードへデータを設定する [C#]

クリップボードを操作する方法について紹介します。
クリップボードの操作はSystem.Windows.Forms名前空間にあるClipboardクラス、またはSystem.Windows名前空間にあるClipboardクラスを使用します。
System.Windows.Forms名前空間のClipboardクラスはWindowsフォームアプリケーションで使用し、System.Windows名前空間のClipboardクラスはWPF等で使用します。
本記事ではSystem.Windows.Forms名前空間のClipboardクラスを例に記載します。(System.Windows名前空間のClipboardクラスも構造はSystem.Windows.Forms名前空間のClipboardクラスと同じです。)

本記事のサンプルコードでは名前空間を省略している箇所があります。

サンプルコードをそのまま実行するには上記の参照が必要になります。

クリップボードのデータを取得する

クリップボードからデータを取得するにはGet~系の静的メソッドを使用します。
Get~系の静的メソッドにはGetAudioStream、GetData、GetDataObject、GetFileDropList、GetImage、GetTextの6種類の静的メソッドがあります。

静的メソッド 説明
GetAudioStream() クリップボードからオーディオストリームを取得します。
GetData(String) クリップボードから指定したDataFormatsクラスに定義されているデータの形式でデータを取得します。
GetDataObject() クリップボードからデータを取得します。
GetFileDropList() クリップボードからファイル名(ファイルパス)のコレクションを取得します。
GetImage() クリップボードからイメージを取得します。
GetText() クリップボードからテキストを取得します。
GetText(TextDataFormat) クリップボードから指定したTextDataFormat列挙型の値が示す形式でテキストを取得します。

GetAudioStream静的メソッド

GetAudioStream静的メソッドはクリップボードにあるオーディオをストリーム形式で返します。
GetAudioStream静的メソッドの構文は以下の通りです。

サンプルコード

以下にGetAudioStream静的メソッドを使用するサンプルコードを記載します。

GetData静的メソッド

GetData静的メソッドはクリップボードにある指定した形式のデータを返します。
GetData静的メソッドの構文は以下の通りです。

引数にはDataFormatsクラスに定義されているデータの形式を指定します。

サンプルコード

以下にGetData静的メソッドを使用するサンプルコードを記載します。

GetDataObject静的メソッド

GetDataObject静的メソッドはクリップボードにあるデータを返します。
GetDataObject静的メソッドの構文は以下の通りです。

サンプルコード

以下にGetDataObject静的メソッドを使用するサンプルコードを記載します。

GetFileDropList静的メソッド

GetFileDropList静的メソッドはクリップボードにあるファイルをファイル名(ファイルパス)のコレクションで返します。
GetFileDropList静的メソッドの構文は以下の通りです。

サンプルコード

以下にGetFileDropList静的メソッドを使用するサンプルコードを記載します。

GetImage静的メソッド

GetImage静的メソッドはクリップボードにあるイメージを返します。
GetImage静的メソッドの構文は以下の通りです。

サンプルコード

以下にGetImage静的メソッドを使用するサンプルコードを記載します。

GetText静的メソッド

GetText静的メソッドはクリップボードにあるテキストを返します。
GetText静的メソッドの構文は以下の通りです。

引数にはテキストの形式を示すTextDataFormat型の値を指定できます。テキストの形式を指定した場合は、形式に合うテキストの場合のみデータを取得することができます。

サンプルコード

以下にGetText静的メソッドを使用するサンプルコードを記載します。

クリップボードにデータを設定する

クリップボードへデータを設定するにはSet~系の静的メソッドを使用します。
Set~系の静的メソッドにはSetAudio、SetData、SetDataObject、SetFileDropList、SetImage、SetTextの6種類の静的メソッドがあります。

静的メソッド 説明
SetAudio(Byte[]) Byte配列をオーディオ(WaveAudio)形式で設定します。
SetAudio(Stream) Streamをオーディオ(WaveAudio)形式で設定します。
SetData(String, Object) 指定したDataFormatsクラスに定義されているデータの形式でデータを設定します。
SetDataObject(Object) クリップボードにデータを設定します。
SetDataObject(Object, Boolean) アプリケーションが終了してもクリップボードにデータを残しておくかどうかを指定して、クリップボードにデータを設定します。
SetDataObject(Object, Boolean, Int32, Int32) アプリケーションが終了してもクリップボードにデータを残しておくかどうか、試行回数、試行間隔を指定して、クリップボードにデータを設定します。
SetFileDropList(StringCollection) ファイル名(ファイルパス)のコレクションをファイル(FileDrop)形式で設定します。
SetImage(Image) イメージ(Bitmap)形式のデータを設定します。
SetText(String) テキストデータを設定します。
SetText(String, TextDataFormat) 指定したTextDataFormat列挙型の値が示す形式でテキストデータを設定します。

SetAudio静的メソッド

SetAudio静的メソッドはオーディオ形式のデータをクリップボードに貼りつけます。
SetAudio静的メソッドの構文は以下の通りです。

引数にはByte配列またはStreamを指定します。

サンプルコード

以下にSetAudio静的メソッドを使用するサンプルコードを記載します。

SetData静的メソッド

SetData静的メソッドは指定した形式のデータをクリップボードに貼りつけます。
SetData静的メソッドの構文は以下の通りです。

引数formatにはDataFormatsクラスに定義されているデータの形式を指定します。

サンプルコード

以下にSetData静的メソッドを使用するサンプルコードを記載します。

SetDataObject静的メソッド

SetDataObject静的メソッドはデータをクリップボードに貼りつけます。
SetDataObject静的メソッドの構文は以下の通りです。

引数copyにはデータをアプリケーションが終了してもクリップボードに残しておくかどうかをtrueまたはfalseで指定します。
引数retryTimesは試行回数、引数retryDelay試行間隔を指定します。

サンプルコード

以下にSetDataObject静的メソッドを使用するサンプルコードを記載します。

SetFileDropList静的メソッド

SetFileDropList静的メソッドはファイル形式のデータをクリップボードに貼りつけます。
SetFileDropList静的メソッドの構文は以下の通りです。

引数にはファイルパスを表す文字列のコレクションを指定します。

サンプルコード

以下にSetFileDropList静的メソッドを使用するサンプルコードを記載します。

SetImage静的メソッド

SetImage静的メソッドはイメージ形式のデータをクリップボードに貼りつけます。
SetImage静的メソッドの構文は以下の通りです。

サンプルコード

以下にSetImage静的メソッドを使用するサンプルコードを記載します。

SetText静的メソッド

SetText静的メソッドはテキスト形式のデータをクリップボードに貼りつけます。
SetText静的メソッドの構文は以下の通りです。

引数にはテキストの形式を示すTextDataFormat型の値を指定できます。テキストの形式を指定した場合は、指定した形式のテキストとしてクリップボードにデータが設定されます。

サンプルコード

以下にSetText静的メソッドを使用するサンプルコードを記載します。

クリップボードにデータが存在するかどうかを確認する

クリップボードにデータが存在するかどうかを参照するにはContains~系の静的メソッドを使用します。
Contains~系の静的メソッドはbool型の戻り値を返し、データが存在する場合はtrueを、データが存在しない場合はfalseを返します。
Contains~系の静的メソッドにはContainsAudio、ContainsData、ContainsFileDropList、ContainsImage、ContainsTextの5種類があります。

静的メソッド 説明
ContainsAudio() クリップボードにオーディオ(WaveAudio)形式のデータが存在するかどうかを示す値を取得します。
ContainsData(String) 指定したDataFormatsクラスに定義されているデータの形式のデータがクリップボードに存在するかどうかを示す値を取得します。
ContainsFileDropList() ファイル(FileDrop)形式のデータがクリップボードに存在するかどうかを示す値を取得します。
ContainsImage() イメージ(Bitmap)形式のデータがクリップボードに存在するかどうかを示す値を取得します。
ContainsText() テキスト形式のデータがクリップボードに存在するかどうかを示す値を取得します。
ContainsText(TextDataFormat) 指定したTextDataFormat列挙型の値が示す形式のテキスト形式のデータがクリップボードに存在するかどうかを示す値を取得します。

ContainsAudio静的メソッド

ContainsAudio静的メソッドはクリップボードにオーディオ形式のデータが存在するかどうかを返します。
ContainsAudio静的メソッドの構文は以下の通りです。

サンプルコード

以下にContainsAudio静的メソッドを使用するサンプルコードを記載します。

ContainsData静的メソッド

ContainsAudio静的メソッドはクリップボードに指定した形式のデータが存在するかどうかを返します。
ContainsData静的メソッドの構文は以下の通りです。

引数formatにはDataFormatsクラスに定義されているデータの形式を指定します。

サンプルコード

以下にContainsData静的メソッドを使用するサンプルコードを記載します。

ContainsFileDropList静的メソッド

ContainsFileDropList静的メソッドはファイル形式のデータが存在するかどうかを返します。
ContainsFileDropList静的メソッドの構文は以下の通りです。

サンプルコード

以下にContainsFileDropList静的メソッドを使用するサンプルコードを記載します。

ContainsImage静的メソッド

ContainsImage静的メソッドはファイル形式のデータが存在するかどうかを返します。
ContainsImage静的メソッドの構文は以下の通りです。

サンプルコード

以下にContainsImage静的メソッドを使用するサンプルコードを記載します。

ContainsText静的メソッド

ContainsText静的メソッドはテキスト形式のデータが存在するかどうかを返します。
ContainsText静的メソッドの構文は以下の通りです。

引数にはテキストの形式を示すTextDataFormat型の値を指定できます。テキストの形式を指定した場合は、指定した形式のテキストがクリップボードに存在する場合のみtrueが返されます。

サンプルコード

以下にContainsText静的メソッドを使用するサンプルコードを記載します。

クリップボードをクリアする

クリップボードのデータをクリアするにはClear静的メソッドを使用します。

Clear静的メソッド

Clear静的メソッドはクリップボードのすべてのデータを削除します。
ContainsImage静的メソッドの構文は以下の通りです。

サンプルコード

以下にClear静的メソッドを使用するサンプルコードを記載します。

サンプルプログラム

Windowsフォームアプリケーションでのプログラムの実装例を記載します。
以下のサンプルでは画面に配置したテキストボックスのテキストをクリップボードへ設定、およびクリップボードから取得する処理を実装します。

ユーザーインターフェース

フォームのインターフェースは次のようにします。

クリップボード操作サンプルフォームデザイン

ソースコード

サンプルプログラムのフォームには以下のソースコードを記述します。

実行結果

作成したサンプルプログラムを実行します。

クリップボード操作サンプルフォーム実行結果

上段のテキストボックスにテキストを入力してbutton1をクリックすると、HTML形式でクリップボードにテキストが設定されます。

クリップボードにHTML形式のテキストが格納されている状態でbutton2をクリックすると、下段のテキストボックスにテキストが設定されます。

参考URL
System.Windows.Forms.Clipboardクラス
System.Windows.Clipboardクラス
DataFormatsクラス
TextDataFormat列挙型