windows右键菜单扩展容器[开源]

今天给大家分享一个我做的小工具,可以自定义扩展右键菜单的功能来提高工作效率,效果图如下:

d58e25683f982d9da2b636931d8f81ea.png
image

如上图,右键菜单多了几个我自定义的菜单

  • 复制文件路径

  • 复制文件夹路径

  • 我的工具箱 <走配置文件动态创建子菜单,下面会讲>

我上图是在win10操作系统下演示的,在win11系统也测试可用。

源码和工具包已经开源在github https://github.com/yuzd/WindowsExplorerExtensions

bbc0c0e13468658bbc165919ef5b9e18.png
image

欢迎star,如果github访问慢,可以公众号内回复 菜单扩展 会提供你baidu网盘的下载包

如何安装

软件包下载后,解压后

ee1eee0be8f40c010624c21257608b98.png
image
  • windows-explorer-ext目录是安装扩展文件用的

  • 30594988.csv 是测试csv转excel的demo文件

  • csv2xlsx.exe是我开发的一个netcore独立打包的csv转excel的执行文件

csv2xlsx的源码地址:https://github.com/yuzd/Exporter/tree/master/ConsoleApp

是基于我开源的各种类型转化封装库,比如csv,xlsx,json,list相互转化

开源地址:https://github.com/yuzd/Exporter

有人可能会问 ,如果电脑安装了office的话 直接csv就可以打开为excel啊, 但是默认的双击csv以excel方式打开,对于是大数字会显示成下面这样

a441e92179df93f42f58854fe215f324.png
image

所以我想要让csv的内容全部以字符串类型展示(就是上面csv3xlsx的功能了)

0d996ae9ea4f4a78a2327e5089394d29.png
image

开始安装

进入解压后的windows-explorer-ext目录f0fff0b9ea25587de2002179498c1d59.png

  • ServerManager.exe 安装扩展用的

  • menu.txt 动态菜单配置文件

  • WindowsExplorerExtentions.dll 扩展逻辑封装

首先打开ServerManager.exe

这个工具你也可以从官方地址下载:https://github.com/dwmkerr/sharpshell/releases22fe3b8c673d4e75783e2034d6d899ca.png

打开ServerManager.exe 点击Load Servercdbb0c6525d1e4b0dbcbc33ae9201812.png

然后选中当前目录的WindowsExplorerExtentions.dll25e4df6b74498c5abd75bc87a4d53fe3.png

选中第一个然后点击Install安装扩展b19246171b58ee0554252bf31d69d9c3.png

出现如下提示代表安装成功a1c2b43812daeaceb5b62792f8d8463c.png

此时,复制文件地址和复制文件夹地址这2个扩展菜单已经可用了

c2ba92e8215838e05f6d7988f8834282.png
image

<我的工具箱>是动态创建二级子菜单的容器,需要配置下文件

打开menu.txt配置文件

总共要配置4个东西(按照-_-隔开)

  • [1]针对什么后缀的文件进行 比如.csv代表只针对csv文件才会创建该菜单

  • [2]菜单名称

  • [3]这个菜单功能对应的可执行文件 这个根据功能自己开发了

  • [4]传给上面可执行文件的参数 {path} 会动态替换为选择的文件地址全路径

注意,针对[1] 有2个特殊约定

如果配置 * 那么选择文件或者文件夹都会出现该菜单

*-_-测试-_-E:\xxxxx\xxxx.exe-_-"{path}"

如果配置 folder 那么只会选择文件夹才会出现该菜单

folder-_-测试-_-E:\xxxxx\xxxx.exe-_-"{path}"

这样一来的话,如果我后面想要动态创建菜单,只需要开发这个菜单功能的可执行文件,然后再menu.txt新增个配置就搞定了, 是不是很方便

上面说到下载包有个csv2xlsx.exe文件,下面我们配置下 动态新增一个二级子菜单<转成excel> 只针对csv文件有效

menu.txt配置如下:

.csv-_-转成excel-_-E:\Tool\windows-extention\csv2xlsx.exe-_-"{path}"

我们这么配置下:

fd5e73f427398bb3ecbedc805c8d1952.png
image

配置好后,在csv类型文件点击右键,就可以看到效果了5ac04e299b67ee817e93647a7c4b56e5.png

点击该菜单,会启动一个cmd窗口 注意,在非csv的文件是不会有这个菜单的,这个是根据配置来的

1aed7e434ccc55d5524df3d58b04471a.png
image

其实就是将选中的文件路径传给你配置的可执行文件去执行

源码说明

打开vs创建一个空的solution,新增一个新的Class Library 工程(目标是framework)

引入  ShapShell 包

59d7809b1118e6a27c38d5741ea3f247.png
image
b2b18d79582ca5eba3afbdf78279c613.png
image

示例代码

[ComVisible(true)]//这个很关键
    [COMServerAssociation(AssociationType.AllFiles)] //这个代表针对文件类型才有效
    //[COMServerAssociation(AssociationType.AllFilesAndFolders)]这个代表针对全部类型有效,包括文件夹
    public class CopyFileLocationExt : SharpContextMenu
    {

        protected override bool CanShowMenu()
        {
            
            return true;
        }


        protected override ContextMenuStrip CreateMenu()
        {
            try
            {
                var contextMenu = new ContextMenuStrip();
                var menuItem = new ToolStripMenuItem("复制文件路径");
                menuItem.Image = Resources.AppStrings.Duplicate3;
                menuItem.Click += (sender, args) =>
                {
                    var file = SelectedItemPaths.First();
                    Clipboard.SetText(file);
                };
                contextMenu.Items.Add(menuItem);

                //  Return the menu.
                return contextMenu;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace);
                return null;
            }
        }

    }

主要依赖ShapShell,创建SharpContextMenu的实现类,重写关键的CanShowMenu和CreateMenu的方法 注意[ComVisible(true)]不能漏

如何调试
9729284651cb79aa53f78863de29b024.png
image
7c991ede22cd0818c4b5e81ea2a9388c.png
image

用ServerManager.exe注册进去后,菜单点击的时候会进入断点

dcdb85cb33e9bd8df0df73d8c02784b7.png
image

关于我

b977720a2f39bca28efd2fac07b55a18.png
image

微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。27年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。

MVP是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用Microsoft技术。

更多详情请登录官方网站https://mvp.microsoft.com/zh-cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值