从Windows资源管理器中传递多个文件/文件夹到外部应用程序

5

大家好,请问有人知道如何将多个文件/文件夹通过注册表引用的外部应用程序(c#)传递给Windows资源管理器吗?

我现在可以使用%1语法来执行单个文件/文件夹,但不确定如何让资源管理器传递多个项目。

有人知道如何做到这一点吗?


1
你考虑过拖放吗? - jdigital
嗨,是的,我考虑过这个,但更喜欢在资源管理器中使用上下文菜单。 - Grant
请编写程序以在Windows资源管理器中选择多个文件。 - Paul Kohler
在C#中的SendTo。你想让我帮你谷歌一下吗?;-) - Sky Sanders
3个回答

2
我认为这是不可能的。当您使用资源管理器打开多个文件时,它会为每个文件启动一个独立的程序副本。我认为无法覆盖此行为。编辑:我忘记了 shell 扩展。 这是可能的。为了解决这个问题,您可以使后续的副本与第一个副本通信,然后退出。关于此的详细说明超出了本答案的范围。

2
当您在资源管理器中选择多个文件时,会调用您的Shell上下文菜单扩展的IShellExtInit :: Initialize方法,并且pdtobj包含所选内容。请注意,编写托管的Shell扩展不受支持。

支持,不支持都无所谓。我们不需要任何支持!;-) - Sky Sanders
1
+1 表示注意到编写托管的 shell 扩展不受支持。 - Scott Smith
1
最新的.Net 4.0运行时支持在进程内并排加载.Net 4.0运行时(以及所有未来的运行时)与早期的.Net运行时。请参阅http://msdn.microsoft.com/en-us/magazine/ee819091.aspx中的以下摘录: “通过能够在任何其他运行时中进程内具有多个运行时的功能,我们现在可以提供编写托管Shell扩展的一般支持,即使这些扩展与机器上的任意应用程序一起在进程内运行。” - logicnp

1
为了可靠地完成这个任务,您需要编写一个 shell 扩展,最可能是一个 sendto 实现。
我自 vb6 以来就没有写过这样的扩展了,但您可以在这里找到一个看起来不错的托管示例。
或者您可以使用免费实用工具

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接