2016-12-21 5 views
0

クリップボードにあるもの(すべての形式)をコピーして再掲載する必要があります。これを行う方法はありますか?クリップボード全体(すべての形式)をコピーする方法

ここでの使用例です。私たちは、Officeアドインで、ユーザーがword/ppt/xlにドラッグ&ドロップできるようにしたい、小さなdocx/pptx/xlsxドキュメントを用意しています。残念ながら、これについて最もよく書かれている形式は、実際のdocx/pptx/xlsxに近いHTMLではありません。

私の考えは(例としてWordを使用して)Word Documentオブジェクトのインスタンスを作成することです(コードはWord AddInですので、Wordは実行中です)。その後、そのDocumentオブジェクトを呼び出してそのすべてを選択し、選択範囲を貼り付けます。

この時点で、クリップボードには貼り付けられたドキュメントが含まれています。文書化されていない形式で、Word文書内のコピー/貼り付けに使用されます。それが私たちが使用したいフォーマットです。

IDataObjectを実装しているオブジェクトにすべてのクリップボードの内容をコピーし、そのオブジェクトをControl.DoDragDrop()に渡すことができれば、ユーザーはWordのどこかにドロップするとWordに渡しますすべてのdocx書式設定を持つ文書化されていない書式です。

これを行う方法はありますか?

更新:ファイルの内容(テキスト、完全に書式設定されたテキスト、表、図形、グラフなど)をドラッグ&ドロップする必要があります。

更新2:これをIDataObjectとしてDoDragDrop()に渡す必要があります。クリップボードからペーストしないでください。 ではなく、は、IDataObjectをWindowsに渡してWindowsがそこから取得するため、通知が必要になります。

+0

"私たちのオフィスアドインでは、ユーザーがword/ppt/xlにドラッグ&ドロップできるようにしたい、小さなdocx/pptx/xlsxドキュメントがあります" - 明確にするために、それらのプログラムへのドキュメント*テキスト*(および書式設定)?または、ドキュメント*ファイル*をそれらのプログラムにドラッグできるようにしますか? – Quantic

+0

これは100%できます。しかし、いくつかの制限。コードが実行されるときにクリップボードに適切なテキストがあると仮定して作業する場合は、クリップボードクラスを使用できます。クリップボードにコピーされているテキストを通知する必要がある場合は、クリップボードデータの遅延レンダリングを把握する必要があり、面倒です。 – Jacobr365

+0

@Quantic - 内容(テキスト、表、図形など) –

答えて

0

これは、Clipboard.GetDataObject()の呼び出しがあります。

関連する問題