仅针对特定文件类型向Windows上下文菜单添加菜单项

时间:2010-01-23 16:12:22

标签: windows-xp registry contextmenu

我开发了一个使用窗口上下文菜单加载图像的应用程序(右键单击该文件),目前正在运行,但是reg键已经开启

HKEY_CLASSES_ROOT\*

它适用于所有文件。

我希望上下文菜单中的菜单项只能显示.jpg文件。

我能做到的?我应该使用哪些注册表项?

提前致谢。

4 个答案:

答案 0 :(得分:78)

1)识别.jpg文件的文件类型(ProgID)

这可以通过检查HKEY_CLASSES_ROOT\.jpg的默认值来完成。它可以是基于您安装的内容的任何内容,但出于本示例的目的,我们将其称为jpegfile,这是一种常见的默认设置。

2)设置该文件类型的上下文菜单项(动词)属性

您可以在HKEY_CURRENT_USER\Software\Classes\jpegfile\shell中设置每用户上下文菜单项。此键具有文件类型的动词列表。 HKEY_LOCAL_MACHINE\Software\Classes\jpegfile\shell中有一个类似的键,这些是文件类型的系统默认值。您也可以在其中放置一个动词键,但如果HKCU中存在相同的键,它将被覆盖,因此请注意。

3)设置命令值

为使其工作而需要设置的最小键值是command子项的默认值。您需要使用应用程序的路径进行设置,例如:HKEY_CURRENT_USER\Software\Classes\jpegfile\shell\open_with_myapp\command将设置为"c:\path\to\myapp.exe" "%1"。现在,.jpg文件的上下文菜单将包含一个“open_with_myapp”项,该项将在单击时启动您的应用,并将所选文件的文件名作为参数传递。当然,您的应用程序如何处理参数取决于您,因此您需要将参数字符串设置为您的应用可以处理的内容。

4)设置其他动词属性

我想你可能会希望上下文菜单项读取比键名更友好的东西。您可以通过设置该键的默认值(open_with_myapp)让上下文菜单显示您想要的任何标签。

这是你的基本概述。绝对查看我关于关联文件的答案,该文件有一个类似的答案:

答案 1 :(得分:15)

注册表中的另一个密钥与用户的默认程序无关:HKEY_CLASSES_ROOT\SystemFileAssociations。由于没有人在这个问题上提到它...在添加上下文菜单项之前无需检查ProgID。例如:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle]
@="Search subtitles..."

[HKEY_CLASSES_ROOT\SystemFileAssociations\.mkv\shell\subtitle\command]
@="\"D:\\Tools\\subsearch.exe\" \"%1\""

参考:https://docs.microsoft.com/en-us/windows/desktop/shell/app-registration#registering-verbs-and-other-file-association-information

答案 2 :(得分:0)

将发布源自the previous answer的我的工作解决方案(及其作者的另一个答案之一)。 它还添加了一个图标。我将其用于所有文件类型,并且没有管理员权限。子项目*在我的注册表中不存在,我自己做了。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Classes\*]

[HKEY_CURRENT_USER\Software\Classes\*\shell]

[HKEY_CURRENT_USER\Software\Classes\*\shell\open_with_notepad_pp]
@="Open with Notepad++"
"icon"="C:\\portable\\npp.7.9\\notepad++.exe"

[HKEY_CURRENT_USER\Software\Classes\*\shell\open_with_notepad_pp\command]
@="\"C:\\portable\\npp.7.9\\notepad++.exe\" \"%1\""

答案 3 :(得分:0)

您可以尝试使用 Nilesoft Shell。您可以在其中以更专业的方式编辑和自定义上下文菜单项。 将菜单项添加到 .jpg 文件的示例

shell
{
    dynamic
    {
        item(type='file' find='.jpg' 
            title='open_with_myapp'
            cmd='myapp.exe' 
            args='@sel.path')
    }
}