zoukankan      html  css  js  c++  java
  • 定制右键功能,看这一篇就够了

    前言

    • 有时候有些经常用到的功能希望可以自定义加入右键菜单中,那么本文可以带你了解通过修改注册表方式定制右键菜单。
    • 特别注意修改注册表属于高危操作,不认识、不知道的注册表不要轻易删除或修改。在编辑注册表之前记得备份注册表。
    • 右键菜单分为很多种,后面我会介绍几个常用的情况,大致情况有下面几种:
        1. 桌面右击空白处弹出菜单
        2. 文件夹右击空白处弹出菜单
        3. 右击单个文件弹出菜单
        4. 右击多个文件弹出菜单
        5. 右击单个文件夹弹出菜单
        6. 右击多个文件夹弹出菜单
        7. 右击文件和文件夹组合时弹出菜单
    • 注册表对大小写不敏感,网上那些文档里面项的名字大小写各不相同,但都是生效的。

    注册表参数

    参数和解释

    参数 解释
    %* 所有参数,我测试结果是快捷方式的参数
    %0、%1 文件路径
    %2 - %9 第二到第九个参数,快捷方式的参数
    %D 当前目录路径
    %H 意义不明,但测试结果都是0
    %I 意义不明,每次都是:num:num格式,每次都会改变
    %L %1,不过是固定长路径,所以都说这个更好
    %S 意义不明,但测试结果都是1
    %V 文件路径
    %W 当前文件的父目录的路径

    验证参数

        为了验证上述参数我写了一个go的脚本来打印通过修改注册表时右键参数具体值。代码如下:

    package main
    
    import (
    	"fmt"
    	"os"
    )
    
    func main() {
    	for _, v := range os.Args {
    		fmt.Printf("[%s]
    ", v)
    	}
    	fmt.Scanln()
    }
    

        为方便copy,我把下面注册表的值放出来:

    "C:
    egedit
    egedit.exe" "*: %*" "0: %0" "1: %1" "2: %2" "3: %3" "4: %4" "5: %5" "6: %6" "7: %7" "8: %8" "9: %9" "D: %D" "H: %H" "I: %I"  "L: %L" "S: %S" "V: %V" "W: %W"
    

        按照下图HKEY_CLASSES_ROOT*shell egeditTestcommand中添加上面那个命令行,测试右键单个文件结果如下:

      1. 右击文件为快捷方式时参数列表才有数据,已经测过不支持%10,右击文件时不会出现参数列表值。
      2. 右击文件为快捷方式时%W会有不一样的结果,当起始位置为空结果为快捷方式所在目录,当起始位置有填目录则结果就是填写的值。看下图:

    注册表参数总结

    1. 知道每个参数的含义,那么在运行自己写的程序时就知道注册表里面的参数如何填写,不会有问题。
    2. 关于第二到第九的参数以及%W的特殊之处,我也是试出来的,因为看别人的博文写的不清楚。所以最好多查查资料搞清楚具体含义再使用会避免很多麻烦。

    右击文件菜单配置

        1. 常用配置如下

    配置键 配置含义
    icon 菜单中显示的图标,一般用ico图标文件。也可以直接填exe可执行程序文件,此时直接用该可执行程序的图标。不填则不显示,文件不存在显示白板。
    MuiVerb 菜单显示名字,不填则默认用注册表的名字
    SubCommands 多级菜单时需要
    MultiSelectModel 官方解释Single:右击单个文件、Document:最多选15个文件、Player:看文档,相当于没限制。经测试不要这一项用的Document限制

        2. 结果截图如下所示,当配置Single时多选文件右键会隐藏配置的菜单:

    多级菜单

    先添加一级菜单

        在HKEY_CLASSES_ROOT*shellone下,增加一个子项SubCommands=two1;two2;two3,示例这三个值会在下一步作为注册表名。

    再添加二级菜单

        在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell下面添加如下几个项,还可以添加三级菜单。

    还可以添加三级菜单

        添加三级菜单也是在HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell下面,如果需要可以添加更多级菜单。

    看下效果图

        看下图,需要执行命令,则在图中对应的command中添加命令即可。

    通过注册表文件创建

        可以先通过注册表工具先创建好可用的注册表配置,再右键一个个导出,然后用记事本把这些注册表合并在一起即可。

        下面是导出的配置组合,保存成.reg文件,双击执行即可完成注册表配置。

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT*shellone]
    "icon"="C:\regedit\seting.ico"
    "SubCommands"="two1;two2;two3"
    "MuiVerb"="一级菜单"
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	wo1]
    "MUIVerb"="二级菜单1"
    "icon"="C:\regedit\seting.ico"
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	wo1command]
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	wo2]
    "MUIVerb"="二级菜单2"
    "icon"="C:\regedit\seting.ico"
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	wo2command]
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	wo3]
    "MUIVerb"="二级菜单3"
    "icon"="C:\regedit\seting.ico"
    "SubCommands"="three31;three32"
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	wo3command]
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	hree31]
    "icon"="C:\regedit\seting.ico"
    "MUIVerb"="三级菜单31"
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	hree31command]
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	hree32]
    "icon"="C:\regedit\seting.ico"
    "MUIVerb"="三级菜单32"
    
    [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionExplorerCommandStoreshell	hree32command]
    

    各种位置的注册表

    右击桌面空白位置

        注册表位置:HKEY_CLASSES_ROOTDesktopBackgroundShellone,效果如下图所示。

    右击文件夹

        注册表位置:HKEY_CLASSES_ROOTDirectoryshellone,效果如下图所示。

    对应文件后缀的打开方式

        这个通过注册表修改比较繁琐,我找到一个软件可以轻松搞定:FileTypesMan。当然可以按照下图所示HKEY_CLASSES_ROOT.test自定义指定后缀文件的菜单:

    总结

    1. 关于右键菜单还有很多技巧,我只是把我知道的,我常用的列出来,做个记录。更多技巧可以百度或者谷歌吧。
    2. 希望本文可以帮到大家,反正我已经通过自己的瞎搞,弄了一套舒服的适合我自己的右键菜单,并且制作了reg文件,换个电脑分分钟搞定。
  • 相关阅读:
    QT::目录/文件
    QT::标题栏/目录/托盘/工具条/状态栏
    QT::布局
    PHP 发送http请求
    php 图片缩放然后合成并保存
    PHP 打开已有图片进行编辑
    一些实用的方法整理(与语言无关)
    PHP 与pdf文档 与条码
    Excel导入遇到的问题An object with the same key already exists in the ObjectStateManager……
    【随笔】Apache降权和禁用PHP危险函数
  • 原文地址:https://www.cnblogs.com/janbar/p/regedit.html
Copyright © 2011-2022 走看看