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

Chi*_*ago 8 windows registry events

我在google上做了几个教程.

我可以通过执行以下操作将右键单击菜单项添加到文件夹:

[HKEY_CLASSES_ROOT\Directory\shell\Command]
@="TestRightClick:"

[HKEY_CLASSES_ROOT\Directory\shell\Command\Command]
@="myExecutable.exe %L"
Run Code Online (Sandbox Code Playgroud)

我还需要将它添加到FILE中.

1)我在哪里将它添加到注册表中?

2)如果我选择多个文件,如何将参数传递给我的可执行文件?

有关:

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

zen*_*n2k 10

你可以用我的程序去做singleinstance.没有涉及shell扩展.

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"
Run Code Online (Sandbox Code Playgroud)


Fac*_*tic 7

你要找的关键词是'动词'或'处理程序'而不是'事件'.

特定文件扩展名的上下文菜单谓词可以放在文件类型的ProgID下,Perceived Type键(如果文件类型具有感知类型),AllFileSystemObjects键或Base Class Key(*).

请注意,在HKEY_CLASSES_ROOT配置单元中写入这些键会将写入重定向到HKEY_LOCAL_MACHINE\Software\Classes,并且需要提升权限.如果您写入HKEY_CURRENT_USER\Software\Classes树,则可以使用标准用户权限执行此操作.

由您来处理选择多个文件的方案.将根据您选择的文件启动一个应用程序实例.您可以通过检查应用程序的另一个实例是否正在运行来解决此问题,并使用进程间通信来通知现有实例已选择其他扩展.

在MSDN上,请务必阅读


Jas*_*mbs 4

  1. 文件通过扩展名具有上下文菜单。将命令注册表项添加到相应的扩展名或 HKEY_CLASSES_ROOT\* 以影响所有文件。
  2. 您可以使用 %1 将文件名传递给应用程序(就像上面用 %L 指示的那样)。如果您选择多个文件,每个文件都会被单独调用,就像您分别右键单击每个文件一样。

我不知道有任何简单的方法可以将多个项目从右键单击上下文菜单传递到一个可执行实例。