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

问题描述 投票:0回答:4

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

HKEY_CLASSES_ROOT\*

它适用于所有文件。

我希望上下文菜单上的菜单项仅应显示 .jpg 文件。

我怎样才能做到这一点?我应该使用哪些注册表项?

windows-xp registry contextmenu
4个回答
102
投票
  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
    ),您可以让上下文菜单显示您想要的项目标签。

这就是您的基本概述。一定要看看我对这个关于关联文件的问题的回答,它有一个类似的答案:


49
投票

注册表上还有一个独立于用户默认程序运行的键:

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://learn.microsoft.com/en-us/windows/desktop/shell/app-registration#registering-verbs-and-other-file-association-information

其他注意事项:

HKEY_CLASSES_ROOT
子树可以写入,但一般是通过合并形成的视图

  • HKEY_CURRENT_USER\Software\Classes
    • 文件类型注册仅对当前用户可见
  • HKEY_LOCAL_MACHINE\Software\Classes
    • 在特定计算机上全局注册文件类型

您也可以注册这些课程

定义的 (ProgID) 动词...\SystemFileAssociations\ 中定义的相同动词具有 优先级,但依赖于特定应用程序,当该应用程序卸载时,它通常会删除其注册表项以及您可能在该密钥下进行了哪些修改/添加。或者,如果默认值 (ProgID) 发生更改,您的修改将不再生效。


即使用户更改/卸载默认程序,

...\SystemFileAssociations\

注册也是

稳定


0
投票

创建一个名为“MYAPP”的密钥

在MYAPP中创建key并命名为“command”

在命令中,将值更改为您的应用程序路径,如下所示“D:\Python_Programlar\pdftopng pp.exe”“%1”

在MYAPP中,输入默认值的文本(您想在上下文菜单上看到什么)

可选,在 MYAPP 中添加新的扩展并将 ico 文件设置为路径(“D:\Python_Programlar\pdftopng\ico.ico”)以查看其上的图标,如下所示


-1
投票
之前的答案

(及其作者的另一个答案)。 它还添加了一个图标。我将它用于所有文件类型,并且没有管理员权限。我的注册表中不存在子项目 *,我自己创建了它。

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\""

更新

*

替换为

.svg
之类的内容,并且仅对于此扩展,才会显示菜单项。
    

© www.soinside.com 2019 - 2024. All rights reserved.