为程序添加系统上下文菜单

using System;
using System.Diagnostics;
using Microsoft.Win32;

namespace SimpleContextMenu
{
    /// <summary>
    /// 在注册表中注册和注销文件上下文菜单.
    /// </summary>
    static class FileShellExtension
    {
        /// <summary>
        /// 注册上下文菜单
        /// </summary>
        /// <param name="fileType">要注册的文件类型</param>
        /// <param name="shellKeyName">在注册表中显示的名称</param>
        /// <param name="menuText">在上下文菜单中显示的文字</param>
        /// <param name="menuCommand">被执行的命令行</param>
        public static void Register(string fileType, string shellKeyName, string menuText, string menuCommand)
        {
            Debug.Assert(!string.IsNullOrEmpty(fileType) &&
                !string.IsNullOrEmpty(shellKeyName) &&
                !string.IsNullOrEmpty(menuText) &&
                !string.IsNullOrEmpty(menuCommand));

            //创建注册表位置的完整路径
            string regPath = string.Format(@"{0}\shell\{1}", fileType, shellKeyName);

            //注册表中添加上下文菜单
            using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(regPath))
            {
                key.SetValue(null, menuText);
            }

            //添加命令到被调用的注册表
            using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(string.Format(@"{0}\command", regPath)))
            {
                key.SetValue(null, menuCommand);
            }
        }

        /// <summary>
        /// 注销上下文菜单.
        /// </summary>
        /// <param name="fileType">注销的文件类型</param>
        /// <param name="shellKeyName">在注册表中注册的名称</param>
        public static void Unregister(string fileType, string shellKeyName)
        {
            Debug.Assert(!string.IsNullOrEmpty(fileType) && !string.IsNullOrEmpty(shellKeyName));

            // 注册表中的位置的完整路径
            string regPath = string.Format(@"{0}\shell\{1}", fileType, shellKeyName);

            //从注册表中删除上下文菜单
            Registry.ClassesRoot.DeleteSubKeyTree(regPath);
        }
    }

}

调用方法:

using System;
using System.Windows.Forms;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

[assembly: CLSCompliant(true)]
namespace SimpleContextMenu
{
    static class Program
    {
        const string FileType = "Directory";          // 注册的文件类型
        const string KeyName = "Simple Context Menu"; //在注册表的上下文菜单名称
        const string MenuText = "Copy to Grayscale";  // 上下文菜单文本

        [STAThread]
        static void Main(string[] args)
        {
            // 注册右键菜单
            if (!ProcessCommand(args))
            {
                //接收命令行参数处理
            }
        }
	}
}

原文地址:http://www.codeproject.com/Articles/15171/Simple-shell-context-menu

时间: 2024-09-22 07:32:14

为程序添加系统上下文菜单的相关文章

Win7旗舰版系统快速将便签等应用程序添加到右键菜单的技巧

  1.首先按"Win+r"组合快捷键打开"运行"窗口,输入regedit,回车打开注册表编辑器; 2.在打开的注册表编辑器中,依次展开定位到HKEY_CLASSES_ROOTDirectoryBackgroundshell,在shell下鼠标右击选择新建"项",例如记事本"NotePad"."QQ".截图工具"SnippingTool"; 3.随后在以上的项目中继续新建子"项

请问怎样为程序添加系统快捷键呀?

问题描述 只要程序运行,不管是否激活这个程序,都可以使快捷键响应! 解决方案 解决方案二:我也想知道解决方案三:虽然只有5分,看一下下面的代码吧.ImportsSystem.Windows.FormsPublicEnumKeyModifiersNone=0Alt=1Control=2Shift=4Windows=8EndEnum'''<summary>'''支持系统热键呼叫'''</summary>'''<remarks></remarks>publicCl

js调出上下文菜单的实例_javascript技巧

本文实例讲述了js调出上下文菜单的实例代码,分享给大家供大家参考,具体如下: 原理 当用户点击右键时会触发一个contextmenu事件,默认会触发浏览器的默认的上下文菜单,通过手动阻止这个默认行为,然后再显示自定义的上下文菜单,当用户单击时隐藏这个菜单即可.代码 1.html <div id="box" style="color:red;width: 100%;height:1000px;" > <div id="left"

与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单“应用程序...”和“共享...”关联, 与 Windows Phone 的图片中心集成

原文:与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..."关联, 与 Windows Phone 的图片中心集成 [索引页][源码下载] 与众不同 windows phone (16) - Media(媒体)之编辑图片, 保存图片到相册, 与图片的上下文菜单"应用程序..."和"共享..."关联, 与 Windows Phon

Wix打包系列(七) 添加系统必备组件的安装程序

原文:Wix打包系列(七) 添加系统必备组件的安装程序     我们知道在vs的打包工程中添加系统必备组件是一件很容易的事情,那么在wix中如何检测系统必备组件并在安装过程中安装这些组件.这里以.Net Framework组件作为必备组件为例:         7.1 检测.Net Framework 版本         步骤1:为安装项目添加WiX .NET extensions库的引用     如果是命令行方式使用wix,那么需要在candle和light的时候添加如下参数: -ext W

Win8系统将蓝牙添加到右键菜单“发送到”选项的方法

  Win8系统将蓝牙添加到右键菜单"发送到"选项的方法 1.打开C:WindowsSystem32,搜索fsquirt.exe,这时会得到多个搜索结果,选择路径是C:WindowsSystem32的那个,其他的也可以,只不过是英文罢了. 2.在fsquirt.exe上右键->创建快捷方式,因为无法在当前位置创建快捷方式,所以点"是"把快捷方式放在桌面上; 3.在开始屏幕直接输入shell:sendto.然后点击输入框下面出现的shell:sendto; 4.

win7系统右键菜单添加EFS快速加密选项的技巧

正常情况下,用户需要打开文件或文件夹属性,在常规-高级中勾选"加密内容以便保护数据",比较繁琐. 操作步骤: 1.按Win+R打开运行,输入regedit回车打开注册表编辑器; 2.导航导以下位置:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced; 3.在右侧新建名为EncryptionContextMenu的32位DWORD值,将其值设置为1即可; 4.无需重启或注销,此时在任意文件或文件夹

Windows 7旗舰版系统下将“运行”添加到开始菜单的方法

  1.首先打开win7系统中的开始菜单,然后在开始搜索框中输入"gpedit.msc",回车并打开本地组策略窗口; 2.打开本地组策略编辑器后,依次展开"用户配置-管理模板-开始菜单和任务栏",然后在右边窗格中找到并双击"将运行命令添加到[开始]菜单"; 3.在弹出的设置窗口中,选择"已启用",并点击"应用-确定"就可以了,这样运行命令就会添加到开始菜单了.

win7系统开始菜单程序显示成条目数量的解决方法

  win7系统电视在使用的时候,我们打开程序都会有记录在大家的菜单栏目中,这个是为了让大家下次再次使用这个程序的时候方便,直接点击就可以打开了,在使用过多的程序以后就会显示狠毒的记录,看起来就非常的乱那么有些用户就必须要删除一些程序,那么很多都觉得有用的程序又不想禁用这个功能,那么该如何让显示数量设置为自己想要条数呢,今天就由小编来为大家解决这个问题吧! 设置多条程序显示的具体方法如下: 1.大家打开开始菜单,就在左下角的图标点击,右键选择里面的属性选项,接着大家切换进入任务栏中和开始菜单的设