2015-04-17 99 views
5

我試圖做一個客戶端 - 服務器程序,它可以共享剪貼板的內容。複製字節數組到剪貼板

現在我可以分享它,如果內容類型是音頻,圖像或文本。 的想法是,我轉換的內容的字節數組,把它,把它轉換回其原始類型(StreamBitmapSourcestring),並通過使用方法Clipboard.SetAudioClipboard.SetImageClipboard.SetText注入它在客戶端剪貼板。

我的問題是,當有在剪貼板中的一些文件。我使用方法Clipboard.GetFileDropList來獲取文件列表,並且對於列表中的每個文件,我將其轉換爲字節數組並將其發送給客戶端。我怎樣才能注入這個字節數組在客戶端剪貼板?

我知道有方法Clipboard.SetFileDropList,但它需要我提供一個文件列表,並且由於該文件不存在於客戶端上,所以我無法使用它。

我該如何解決這個問題?

+1

如果沒有更好的,你可以重新創建一個臨時文件夾中的文件,然後複製它。這就是無國界鼠標所做的,我認爲這不是巧合 –

回答

3

爲了使客戶端處理文件作爲pastable,他們將需要在以某種方式在客戶端文件系統的存在,因爲設置剪貼板中的內容時,剪貼板預期的文件名列表。

var temp = Environment.ExpandEnvironmentVariables("%TEMP%"); 

一旦這樣做:

這可以通過數據流傳輸到客戶端,然後讓客戶立即解包流到一個臨時文件夾來完成,以該路徑通過,可獲得並且文件是我放置的,您可以將這些文件放在剪貼板上,就好像它們是複製的。

被警告說,支持文件的複製/粘貼,而不是有一個選項「轉移」的文件可能比其他操作運行慢得多,由於大文件如何能得到。

+0

我認爲使用這種方法,但我想知道是否有一些更好的。我擔心如果傳輸的文件很大,可能會浪費一些內存。 無論如何,我會嘗試實施你的建議。 –