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

Chi*_*ago 9 registry right-click shell-verbs

有关:

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

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

HKEY_CLASSES_ROOT*\壳牌\ TestRightClick\COMMAND

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

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

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

low*_*vel 7

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

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


Fac*_*tic 3

正如我在上一个问题中所说,您必须在应用程序中对此保持警惕。如果您不使用 shell 扩展,则每个选定的文件都会启动该程序的一个实例。您的总体策略可能是这样的:

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