添加右键菜单+获取文件路劲

右键菜单的添加和文件路劲的获取是和windows注册表相关的,windos+R输入regedit命令查看,里面有很多的注册项,而在windows变成中可以通过RegistryKey来添加注册项

1、添加右键菜单

        //注册右键菜单
        static private void AddFileContextMenuItem(string itemName)
        {
            //以只读方式检查子项
            RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"*\shell", true);
            if (shellKey == null){
                shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");
            }
            //检索所有包含子项的数组名,不存在则创建
            string[] ttt = shellKey.GetSubKeyNames();
            for (int i = 0; i < ttt.Length; i++) {
                if (ttt[i] == itemName) {
                    shellKey.Close();
                    return;
                }
            }
            //创建项:右键显示的菜单名称
            RegistryKey rightCommondKey = shellKey.CreateSubKey(itemName);

            //刷新到磁盘并释放资源
            rightCommondKey.Close();
            shellKey.Close();
        }
实际上可以在shell下面找到我们创建的子项,更多的可以在msdn上查看到这个类的具体用法

https://msdn.microsoft.com/zh-cn/library/microsoft.win32.registrykey.aspx


2、获取文件的路劲

需要获取menu的路劲,首先是需要检查menu是否注册成功,使用的FindWindow函数来获取窗口的句柄,然后检查句柄的值可以做判断

            // 获取右键菜单的窗口句柄
            int WINDOW_HANDLER = FindWindow(null, menu_name).ToInt32();
            if (WINDOW_HANDLER != 0){
                Console.WriteLine("not found menu");
                Console.ReadLine();
            }else{
// 获取真正的路劲
}
获取真正的路劲,文件的名称是作为当前线程的一个命令行参数传入的,所以我们直接通过Environment的GetCommandLineArgs()函数就可以获取

                excle_path = Environment.GetCommandLineArgs()[Environment.GetCommandLineArgs().Length - 1];
                Console.WriteLine(string.Format("The File Path is Below\n {0}",excle_path));

注意Environment.GetCommandLineArgs()[Environment.GetCommandLineArgs().Length - 1];实际上是一个string[ ]变量值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值