2012-03-07 101 views
2

問:異步拖放到Windows資源管理器

我需要一個DragAndDrop解決方案來下載滴文件Windows資源管理器的文件夾中的C#.NET & 4.0。它不應該有必要在計算機上有文件。該文件將足夠大,拖動時間將不足以完成下載。我發現了各種問題,甚至接受了答案,但沒有任何結果。非常最接近的東西的工作是這樣的演示項目:

http://blogs.msdn.com/b/delay/archive/2009/11/16/creating-something-from-nothing-and-knowing-it-developer-friendly-virtual-file-implementation-for-net-refined.aspx

如何實現這一代碼下載一個文件把它的下降發生在Windows資源管理器的行動的一部分?

+0

從哪裏拖動?從你的應用程序? – JTeagle 2012-03-07 11:32:39

+0

是的,來自我的申請。例如包含文件URL的文本框。 – Akku 2012-03-07 11:35:22

+0

需要考慮的一個可能的選擇是將*快捷方式*放入目標目錄(因此,快速創建快捷方式文件非常麻煩),並且快捷方式指向其他位置的文件(下載似乎是個不錯的選擇)在後臺下載文件。如果您將快捷方式指向完成的文件名,但在完成時指向完成的文件名並重新命名,則快捷方式只會在文件完全下載後才能訪問該文件。不理想,但可能會讓你脫離現場。 – JTeagle 2012-03-07 11:45:03

回答

4

好的,正如Yahia在評論中所說的,如果沒有適用於不同版本的Windows和.NET的適當外殼擴展,這是不可能的。你可能對我發佈的鏈接感到幸運,但對我來說,它崩潰了瀏覽器,開發人員認爲它工作正常。

我的誠實觀點是隻有.NET,你只能通過複製特殊的.temp文件,看它們的位置,完成任務並在任務完成時替換.temp文件,使用FileSystemWatcher來完成。傷心的Windows。

5

網頁瀏覽器每天解決這個問題。簡化他們的模型,做到這一點:

  1. 做一個小程序,執行您的下載給出適當的命令行參數。這個小程序應該彈出一個帶有進度條和取消按鈕的窗口。

  2. 當用戶「丟棄」某物時產生第二個程序。該程序將立即創建目標文件並開始填充數據。它將在文件完成下載之前保持適當的鎖定,此時「下載程序」將退出。

如果你要保持「下載」線程的原始程序,您將需要某種形式的下載管理器,使用戶可以在他們的下載得到適當的反饋。

+0

意外提升。這並不能解決問題!你需要知道文件被刪除的位置,因爲我堅信,webbrowsers除非使用臨時文件和文件systemwatcher,否則不能知道這一點。例如,某人將圖像拖到桌面上的文件夾中。命令行參數是什麼?如果我能知道文件被刪除的位置,即使在同一個應用程序中也不會有問題。把它放在一個不同的過程中實際上並沒有什麼幫助。 – Akku 2012-03-18 12:22:22

+0

也許Web瀏覽器提示保存位置而不是允許丟棄的方法更合適? – Brannon 2012-03-20 14:03:24

+0

只要您使用對話框詢問位置,拖放的整個想法就不再適用了。 – Akku 2012-03-20 19:24:46

相關問題