Top > .NET & Control > クリップボード(ClipBoard) 

クリップボード(ClipBoard)

クリップボードのイメージ図

クリップ ボード の解説

方法 : クリップボードにデータを追加する 

VSドキュメント

ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.ja/dv_fxmancli/html/25152454-0e78-40a9-8a9e-a2a5a274e517.htm

抜粋

やりかけたが、 完全なコードではないし、面白くないので仕切り直しする。 

クリップボードの形式

DataFormats フィールド 意味
Bitmap Windows ビットマップ形式
Dib DIB (Device-Independent Bitmap) 形式
EnhancedMetafile Windows 拡張メタファイル形式
Html HTML データで構成されるテキスト
OemText 標準Windows OEM (Original Equipment Manufacturer) テキスト形式
Palette Windows パレット形式
Rtf RTF (Rich Text Format) データで構成されるテキスト
Serializable 任意の種類の Windows フォーム オブジェクトをカプセル化する形式
Text 標準 ANSI テキスト形式
UnicodeText 標準 Windows Unicode テキスト形式
CommaSeparatedValue コンマ区切り (CSV: Comma-Separated Value) 形式
Dif Windows DIF (Data Interchange Format) 形式
FileDrop Windows ファイル ドロップ形式
Locale Windows のカルチャで使用する形式
MetafilePict Windows メタファイル形式
PenData Windows ペン データ形式
Riff RIFF (Resource Interchange File Format) オーディオ形式
StringFormat Windows フォーム文字列クラス形式
SymbolicLink Windows シンボリック リンク形式
Tiff TIFF (Tagged Image File Format)
WaveAudio WAVE オーディオ形式

※背景色が”白色”の形式は、Windowsで直接扱わない。
※フィールドはすべて、Static かつ ReadOnly(書き込み不可)

ClipBoardクラス

メソッド 意味
Clear すべてのデータをクリップボードから削除する
     
ContainsAudio クリップボードに WaveAudio 形式のデータが存在するか問い合わせる
ContainsData 指定した形式のデータまたはその形式に変換できるデータがクリップボードに存在するか問い合わせる
ContainsFileDropList FileDrop 形式のデータまたはその形式に変換できるデータがクリップボードに存在するか問い合わせる
ContainsImage Bitmap 形式のデータまたはその形式に変換できるデータがクリップボードに存在するか問い合わせる
ContainsText クリップボードにテキスト データが存在するか問い合わせる
GetAudioStream クリップボードからオーディオ ストリームを取得する
GetData クリップボードから指定した形式でデータを取得する
GetDataObject 現在システム クリップボードにあるデータを取得する
GetFileDropList ファイル名のコレクションをクリップボードから取得する
GetImage クリップボードからイメージを取得する
GetText クリップボードからテキスト データを取得する
     
SetAudio データを WaveAudio 形式でクリップボードに追加する
SetData データを、指定した形式でクリップボードに追加する
SetDataObject データをシステム クリップボードに貼り付ける
SetFileDropList ファイル名のコレクションを FileDrop 形式でクリップボードに追加する
SetImage Image を Bitmap 形式でクリップボードに追加する
SetText テキスト データをクリップボードに追加する

クリップボードへデータを取得およびセットする(例)

テキストデータの取得とセット

String ClipText = null;
if
(Clipboard.ContainsText(TextDataFormat.Text))
{
    ClipText = Clipboard.GetText(TextDataFormat.Text);
}

Clipboard.SetText(ClipText, TextDataFormat.Text);

 

Dim ClipText As String = Nothing
If Clipboard.ContainsText(TextDataFormat.Text) Then
    ClipText = Clipboard.GetText(TextDataFormat.Text)
End If

Clipboard.SetText(ClipText, TextDataFormat.Text)

複数のテキストデータの取得とセット

StringCollection ClipTextList = null;
if
(Clipboard.ContainsFileDropList())
{
    ClipTextList = Clipboard.GetFileDropList();
}

Clipboard.SetFileDropList(ClipTextList);

 

Dim ClipTextList As StringCollection = Nothing
If Clipboard.ContainsFileDropList() Then
    ClipTextList = Clipboard.GetFileDropList()
End If

Clipboard.SetFileDropList(ClipTextList)

HTMLデータの取得とセット

String ClipHtmlText = null;
if
(Clipboard.ContainsText(TextDataFormat.Html))
{
    ClipHtmlText = Clipboard.GetText(TextDataFormat.Html);
 
}

Clipboard.SetText(ClipHtmlText, TextDataFormat.Html);

 

Dim ClipHtmlText As String = Nothing
If Clipboard.ContainsText(TextDataFormat.Html) Then
    ClipHtmlText = Clipboard.GetText(TextDataFormat.Html)
End If

Clipboard.SetText(ClipHtmlText, TextDataFormat.Html)

画像データの取得とセット

Image ClipImage = null;
if
(Clipboard.ContainsImage())
{
    ClipImage = Clipboard.GetImage();
}

Clipboard.SetImage(ClipImage);

 

Dim ClipImage As Image = Nothing
If Clipboard.ContainsImage() Then
    ClipImage = Clipboard.GetImage()
End If

Clipboard.SetImage(ClipImage)

オーディオデータの取得とセット

Stream ClipAudioStream = null;
if
(Clipboard.ContainsAudio())
{
    ClipAudioStream = Clipboard.GetAudioStream();
}

Clipboard.SetAudio( Clip AudioStream);

 

Dim ClipAudioStream As Stream = Nothing
If Clipboard.ContainsAudio() Then
    ClipAudioStream = Clipboard.GetAudioStream()
End If

Clipboard.SetAudio(ClipAudioStream)

SetDataObject、 GetDataObject

IDataObject iClipData = Clipboard.GetDataObject();

if
(iClipData.GetDataPresent(DataFormats.Text))
    Text = (String)iClipData.GetData(DataFormats.Text);

Clipboard.SetDataObject("");

 

Dim iClipData As IDataObject = Clipboard.GetDataObject()

If iClipData.GetDataPresent(DataFormats.Text) Then
    Text = DirectCast(iClipData.GetData(DataFormats.Text), [String])
End If

Clipboard.SetDataObject("") 

クリップボードの応用例

.NETでサポートするクリップボードは、メンバーを見れば分かる通り、イベントはサポートしていない。そのため、他のアプリケーションでクリップされたタイミングで処理を行いたい場合などについては、Timerで監視するかWInAPIを使うしかなさそう。

ClipSPY


http://www.codeproject.com/KB/clipboard/ClipSpyPlus.aspx

クリップボードの状態をリアルタイムに確認できるツールで、ソースコードも紹介されている。なお、日本語のHTMLは例外が発生する場合がある。画面はフォームのデザイン機能は、使っておらずカスタムコントロールで作成されている。 

クリップボード読み上げアプリケーション


http://www.createsystem.co.jp/DTalkerSapi1.html#パッケージ

このソフトは、Windowsのナレータに対応した「テキスト読み上げアプリケーション」で、フリー版もあるので試してみてはどうだろう。テキストをクリップした瞬間にしゃべり出すので、文章のチェックに以外と便利なツールだ。 

 

▲ページトップに戻る