0

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

これがユースケースです。Office アドインで、ユーザーが word/ppt/xl にドラッグ アンド ドロップできるようにしたい小さな docx/pptx/xlsx ドキュメントがあります。残念ながら、これに最適な文書化された形式は html であり、実際の docx/pptx/xlsx にそれほど近いものではありません。

したがって、私の考えでは、(例として Word を使用して) Word Document オブジェクトのインスタンスを作成します (このコードは Word アドインであるため、定義上、Word が実行されています)。次に、その Document オブジェクトを呼び出してすべてを選択し、選択内容を貼り付けます。

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

次に、クリップボードのすべてのコンテンツを IDataObject を実装するオブジェクトにコピーし、そのオブジェクトを Control.DoDragDrop() に渡すことができれば、ユーザーがそれを Word のどこかにドロップすると、文書化されていない形式で Word に渡されます。すべての docx フォーマットがあります。

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

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

更新 2:これを IDataObject として DoDragDrop() に渡す必要があります。クリップボードから貼り付けるのではありません。IDataObject を Windows に渡し、Windows がそこから受け取るため、発生時に通知を受ける必要はありません。

4

1 に答える 1

0

これには、Clipboard.GetDataObject() という呼び出しがあることがわかりました。

于 2016-12-22T20:28:39.990 に答える