2017-05-07 26 views
3

ファイルパスを使用してC#でオーディオファイルをクリップボードにコピーしようとしています。私が実行している問題は、アプリケーションの外に貼り付けることができないため、コピーしていないか正しくコピーしていないことです。ここでWPF C#オーディオファイルをクリップボードにコピー

は、私がクリップボードにコピーしようとしている方法です:

b_array = File.ReadAllBytes(fileLocation); 
Clipboard.Clear(); 
Clipboard.SetAudio(b_array); 

私のテストでは、変数のFileLocationのようなものと等しい:C:ベン\音楽\サンプル\ kick_05.wav

を\ \ユーザー
+0

を使用してクリップボードに直接ファイルを追加することができますか?このコードでは、オーディオ形式を理解するアプリケーションにのみ貼り付けることができます(オーディオを試したことはありません)。 –

+0

@AlexPaven私はファイルエクスプローラでコピー機能がどのように動作するかについて、どこでも(ファイルエクスプローラとオーディオ編集プログラム)ファイルを貼り付けることができるようにしようとしています。 –

+1

私はクリップボードに関する多くの経験はありませんが、ファイル情報と共に別のエントリを挿入する必要があると思います。そうしないと、コピー元のファイル名と場所がわからなくなります。Clipboard.SetFileDropList –

答えて

5

ファイルの内容を読む必要はありません。あなたは、たとえば、Windowsエクスプローラでそのファイルを貼り付けることができるように期待してくださいSetFileDropList

StringCollection files = new StringCollection(); 
files.Add(fileLocation); 
Clipboard.SetFileDropList(files); 
+0

これを実行しようとしましたが、例外がスローされました。 System.Runtime.InteropServices.COMException: 'OpenClipboardが失敗しました(HRESULTからの例外:0x800401D0(CLIPBRD_E_CANT_OPEN))' –

+0

これをバックグラウンドスレッドで実行しようとしていますか?私はそれがUIスレッド上で発生する必要があると確信しています。私はTask.Run内でそれを使用して例外をスローする問題を見てきました –

+0

私は間違いなくUIスレッドでこれをやっています。私もこれをラップして、確かめて、同じ問題を抱えています: this.Dispatcher.Invoke(>)=> {...}); –

関連する問題