2012-03-07 105 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

相关问题