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

时间:2009-12-01 15:06:25

标签: registry right-click shell-verbs

相关:

How to add new items to right-click event on Folders and Files in Windows?

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

  

HKEY_CLASSES_ROOT * \壳牌\ TestRightClick \命令

     

-------默认= c:\ RightClickTest.exe“%1”

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

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

2 个答案:

答案 0 :(得分:7)

如果您正在寻找快速而肮脏的解决方法,可以在'%AppData%\ Microsoft \ Windows \ SendTo'中创建可执行文件的快捷方式现在您可以选择一堆文件,右键单击,选择发送到,和你的申请。

这会将所有选定的文件作为单独的命令行选项传递给应用程序的一个实例...请记住,有32767个字符的命令行限制,这将限制您可以使用此文件传递给应用程序的文件数方法,并确保您的程序不会'尝试打开它不知道如何处理的文件。从长远来看,Factor Mystic的方法更好。

答案 1 :(得分:2)

正如我在上一个问题中所说的那样,你必须在你的应用程序中对此有所了解。如果您没有使用shell扩展,则每个文件将启动一个程序实例。您的总体策略可能是:

  1. 使用文件参数(%1)启动应用程序时,请检查该应用程序的任何实例是否已在运行。
  2. 如果另一个实例正在运行,请打开该应用程序的某种进程间通信(IPC)通道。
  3. 将此实例的file参数传递给主实例。
  4. 在主程序中写入逻辑,以便在正在运行时接收此信息。