我做了谷歌几个教程。
我可以添加右键菜单项到一个文件夹 ,做到这一点:
[HKEY_CLASSES_ROOT\Directory\shell\Command] @="TestRightClick:" [HKEY_CLASSES_ROOT\Directory\shell\Command\Command] @="myExecutable.exe %L"
我还需要将其添加到FILE中。
1)我在哪里添加它在registry中?
2)如果我select多个文件,如何将parameter passing给我的可执行文件?
如何通过单击事件(动词)传递多个文件/文件夹path到可执行文件?
我不知道任何简单的方法来将右键单击上下文菜单中的多个项目传递给一个可执行实例。
你正在寻找的关键词是“动词”或“处理程序”而不是“事件”。
可以在文件类型的ProgID,感知类型键(如果文件类型具有感知类型),AllFileSystemObjects键或基类键(*)下放置用于特定文件扩展名的上下文菜单动词。
请注意,在HKEY_CLASSES_ROOT
配置单元中写入这些密钥会将写入重定向到HKEY_LOCAL_MACHINE\Software\Classes
,并且需要提升权限。 如果您写入到HKEY_CURRENT_USER\Software\Classes
树,则可以使用标准用户权限执行此操作。
这取决于你选择多个文件的场景。 您的应用程序的一个实例将按您选择的每个文件启动。 您可以通过检查应用程序的另一个实例是否正在运行来解决此问题,并使用进程间通信来通知现有实例已选择其他扩展。
在MSDN上,一定要阅读
你可以用我的程序singleinstance做到这一点。 没有涉及的外壳扩展。
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\SystemFileAssociations\.txt\Shell\p4merge] "MultiSelectModel"="Player" [HKEY_CLASSES_ROOT\SystemFileAssociations\.txt\Shell\p4merge\Command] @="\"d:\\singleinstance.exe\" %1 \"C:\\Program Files\\Perforce\\p4merge.exe\" $files --si-timeout 400"