クリップボードにあるもの (すべての形式) をコピーして再投稿する必要があります。これを行う方法はありますか?
これがユースケースです。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 がそこから受け取るため、発生時に通知を受ける必要はありません。