如何通过右键事件(动词)将多个文件/文件夹路径传递给可执行文件?

11

相关:

如何在Windows上为文件夹和文件添加右键单击事件中的新项?

我通过向HKEY_CLASSES_ROOT \ *添加注册表键来向所有文件添加自定义右键单击动词。 最终结果如下所示:

HKEY_CLASSES_ROOT*\Shell\TestRightClick\Command

-------Default = c:\RightClickTest.exe "%1"

问题:选择多个文件时,c:\RightClickTest.exe会被调用多次(所选文件数量)

我需要什么:将多个文件路径传递给一个可执行文件


1
将DDE集成到您的可执行文件中。当Shell需要为每个选定的项目执行动作时,如果您的可执行文件尚未运行,则它将自动启动,并使用您指定的DDE命令将每个项目传递给您的单个实例。 - Remy Lebeau
2个回答

11
如果你想要一个快速而且不太正式的解决方法,可以在 "%AppData%\Microsoft\Windows\SendTo" 中创建一个到你可执行文件的快捷方式。现在你可以选择一堆文件,右键点击,选择“发送到”,然后选择你的应用程序。
这将把所有选定的文件作为单独的命令行选项传递给你的应用程序的一个实例... 请注意,有一个32767个字符的命令行限制,这将限制使用此方法传递给您的应用程序的文件数,并确保您的程序不会尝试打开它不知道如何处理的文件。从长远来看,Factor Mystic的方法更好。

2

如我在前一个问题中所述,您需要在应用程序内部智能地处理此问题。如果您没有使用shell扩展程序,则每选择一个文件将启动程序的一个实例。您的一般策略可能是:

  1. 当使用文件参数(%1)启动应用程序时,请检查是否已经运行了该应用程序的任何实例。
  2. 如果另一个实例正在运行,请打开某种进程间通信(IPC)通道到该应用程序。
  3. 将此实例的文件参数与主要实例通信。
  4. 在主程序中编写逻辑以处理接收此信息时的情况。

这两种方法之间有什么建议的做法,是实现一个 shell 扩展还是另一种方法更简单?它们中的哪一个不那么琐碎? - Drazen Bjelovuk

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