2014-04-13 55 views
0

我正在使用此Stack article(特別是第二個答案)中的代碼來監視剪貼板更改的時間。此應用程序的最終目標是用戶可以複製任何文件類型(無論是.xlsx,.pk3,.sln等),文件夾,圖像還是字符串,並將其自動保存到其臨時目錄中。我會設置文件大小限制,以便臨時文件夾不會重載。應用程序的整體概念是提供便利,因此用戶可以恢復被複制但被刪除或丟失的數據。保存任何複製到剪貼板的文件類型

到目前爲止,上面引用的代碼對字符串和圖像非常適用。但是,在查看DataFormats列表中的項目(即用法:DataFormats.Bitmap)之後,我找不到任何文件類型或文件夾的全部內容。我也找不到任何方法來確定複製的文件類型。有什麼方法可以確定嗎?例如,如果有一種方法可以獲得複製文件的文件擴展名,這將有所幫助。

也許我的期望太高了。即使我保存了一組允許的文件類型(.xlsx,.sln等),我也不會想到保存該類型的文件。看來我無法從DataObject類型獲取字節,這將是簡單的方法。

有關如何完成此操作的任何想法?謝謝。

回答

0

原因是,爲什麼找不到所有的catch,是因爲每個格式都是在主機上註冊的,由應用程序使用該文件格式。 你可以通過使用 string [] formats = iData.GetFormats();來獲取剪貼板中對象所保存的文件格式的當前列表。

但是,你不能只是序列化(精確複製)什麼數據進來,並將其保存爲Clipboard.GetFileDropList()中的最後一項;

好像是的arent音頻/圖像中的所有文件/串有一個非常具體的格式 以及反正,只是我的想法

也許看這裏 http://www.codeproject.com/Articles/15333/Clipboard-backup-in-C

+0

亞歷克斯,文件格式,我得到很奇怪。我讓他們九個爲我複製任何文件:殼牌陣列IDList表 DataObjectAttributes DataObjectAttributesRequiringElevation Shell對象偏移 首選DROPEFFECT AsyncFlag FileDrop FileNameW 文件名。所以,不知道這對我有什麼幫助,或者其中的任何意義。也對序列化感到困惑。你能提供一些一步一步的答案嗎? – Paul

+0

生病今天試着看看它:) - 看看我能不能找到你的東西:)我將不會有時間,直到大約12小時左右,如果你可以等那麼長時間 – VisualBean

+0

這很好,謝謝。 – Paul