大家好,请问有人知道如何将多个文件/文件夹通过注册表引用的外部应用程序(c#)传递给Windows资源管理器吗? 我现在可以使用%1语法来执行单个文件/文件夹,但不确定如何让资源管理器传递多个项目。 有人知道如何做到这一点吗?
我认为这是不可能的。当您使用资源管理器打开多个文件时,它会为每个文件启动一个独立的程序副本。我认为无法覆盖此行为。编辑:我忘记了 shell 扩展。 这是可能的。为了解决这个问题,您可以使后续的副本与第一个副本通信,然后退出。关于此的详细说明超出了本答案的范围。
当您在资源管理器中选择多个文件时,会调用您的Shell上下文菜单扩展的IShellExtInit :: Initialize方法,并且pdtobj包含所选内容。请注意,编写托管的Shell扩展不受支持。
为了可靠地完成这个任务,您需要编写一个 shell 扩展,最可能是一个 sendto 实现。我自 vb6 以来就没有写过这样的扩展了,但您可以在这里找到一个看起来不错的托管示例。或者您可以使用免费实用工具。