|
.NET TIPS クリップボードからデータを受け取るには?デジタルアドバンテージ2004/04/23 |
![]() |
|
|
|
クリップボードは、アプリケーション間でデータを転送するためにWindowsシステムが提供している機構である。.NET Frameworkのクラス・ライブラリには、クリップボードのデータを読み書きするためのClipboardクラス(System.Windows.Forms名前空間)が用意されている。本稿では、このクラスを利用してクリップボードからデータを受け取る場合の基本的なコーディングについて解説する。
プログラムでクリップボードからデータを受け取るには、まずクリップボード内に格納されているデータを取得し、次にそのデータに利用可能な形式のデータが含まれているかどうかを確認してから、実際のデータを読み取るという流れになる。
データの取得がこのような2段階となっているのは、Windowsのクリップボードが、1つの情報を複数の異なるデータ形式で保持できるためだ。例えば、ブラウザで表示されているテキストの一部を選択し、メニューから[編集]−[コピー]を実行した場合、単純なテキストとともに、タグなどを含んだHTML形式のテキストなどもクリップボードには格納される。このためプログラムでは、どの形式のデータを読み取るかを指定する必要がある。
クリップボード・データの取得
まずクリップボードからのデータの取得は、ClipboardクラスのGetDataObjectメソッドによって行う。
IDataObject data = Clipboard.GetDataObject();
このメソッドはIDataObjectインターフェイス(System.Windows.Forms名前空間)を実装したオブジェクトを返す。このメソッドで得られたクリップボード・データに関しては、そのデータがどのようなクラスのオブジェクトであるかを気にせずに、IDataObjectインターフェイスで定義されているメソッドだけを使って操作せよ、という意味である。
形式を指定したデータの取得
こうして得られたクリップボードのデータが、指定した形式をサポートしているかどうかを調べるには、IDataObjectインターフェイスで定義されているGetDataPresentメソッドを利用する。また、指定した形式のデータを取り出すには、同インターフェイスのGetDataメソッドを利用する。.NET Frameworkのクラス・ライブラリで直接サポートされている形式は、DataFormatsクラス(System.Windows.Forms名前空間)のプロパティとして定義されており、これら2つのメソッドでは、このプロパティの値をパラメータとして指定する。
例えば、単純なテキスト形式のデータがクリップボードに含まれているかどうかを調べ、それが含まれていれば文字列として取り出すコードは次のようになる(C#の場合。VB.NETの場合は後述のサンプル・プログラムを参照)。
if (data.GetDataPresent(DataFormats.Text)) {
str = (string)data.GetData(DataFormats.Text);
}
クリップボードのデータを表示するサンプル・プログラム
以上の手順を使用したサンプル・プログラムを次に示す。このプログラムは、クリップボードにテキスト形式かビットマップ形式のデータが格納されている場合に、そのデータを取得して表示するものだ。
まず、Visual Studio .NETでWindowsアプリケーションのプロジェクトを作成し、次の図のようにButtonコントロール、TextBoxコントロール、PictureBoxコントロールの3つをWindowsフォームの適当な位置に配置する。
![]() |
| Buttonコントロール、TextBoxコントロール、PictureBoxコントロールを配置したWindowsフォーム |
次に、いま配置したButtonコントロールをダブルクリックし、次のコードを記述する。
|
|
| Buttonコントロールをダブルクリックして記述するコード(C#) |
|
|
| Buttonコントロールをダブルクリックして記述するコード(VB.NET) |
ブラウザなどで画像やテキストをクリップボードにコピーしてからボタンをクリックすれば、コピーされたデータの形式に従ってそれが表示されるはずだ。![]()
| カテゴリ:Windowsフォーム 処理対象:クリップボード 使用ライブラリ:Clipboardクラス(System.Windows.Forms名前空間) 使用ライブラリ:IDataObjectインターフェイス(System.Windows.Forms名前空間) 使用ライブラリ:DataFormatsクラス(System.Windows.Forms名前空間) |
|
||||||||||||||||||||||||||||
| 「.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 -



