如何通过右键单击事件(动词)将多个文件/文件夹路径传递给可执行文件?
-
11-09-2019 - |
题
有关的:
如何在 Windows 中的文件夹和文件的右键单击事件中添加新项目?
我通过将注册表项添加到 HKEY_CLASSES_ROOT\* 来向所有文件添加自定义右键单击谓词。最终结果看起来像这样
HKEY_CLASSES_ROOT*\Shell estRightClick\Command
--------默认 = c: ightClickTest.exe“%1”
问题: 选择多个文件时 c: ightClickTest.exe 将被调用多次(所选文件的数量)
我需要的: 将多个文件路径传递给一个可执行文件
解决方案
正如我在上一个问题中所说,您必须在应用程序中对此保持警惕。如果您不使用 shell 扩展,则每个选定的文件都会启动该程序的一个实例。您的总体策略可能是这样的:
- 当使用文件参数启动应用程序时(
%1
),检查应用程序的任何实例是否已在运行。 - 如果另一个实例正在运行,请打开该应用程序的某种进程间通信 (IPC) 通道。
- 将此实例的文件参数传递给主实例。
- 在主程序中编写逻辑来解决在运行时接收此信息的问题。
其他提示
如果你正在寻找一个快速和肮脏的解决方法,你可以创建一个快捷方式在“%APPDATA%\微软\的Windows \的SendTo”现在,你可以选择一堆文件的可执行文件,右击,选择发送至和你的应用程序。
这将所有选中的文件作为单独的命令行选项传递给你的应用程序的一个实例...记住有一个32767字符的命令行限制,这将限制你可以通过使用这个应用程序中的文件数量方法,并确保你的程序不会”尝试打开它不知道如何处理的文件。从长远来看,因子神秘的方法是更好的方式。
不隶属于 StackOverflow