加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C# 如何在 Windows 文件系统中添加自定义右键菜单

(2011-11-01 11:01:42)
标签:

c右键菜单

it

分类: Programm

意图:在 Windows 文件系统中添加自定义的右键菜单项。

方法:通过改写注册表实现

  一、给所有类型的文件添加自定义的右键菜单

  HKEY_CLASSES_ROOT\*\shell  

        HKEY_CLASSES_ROOT\*\shell\自定义的菜单名

        HKEY_CLASSES_ROOT\*\shell\自定义的菜单名\command

          值名称:(默认)     类型:REG_SZ      数据:关联程序的完全限定名称

  二、给所有文件夹添加自定义的右键菜单

    HKEY_CLASSES_ROOT\Directory\shell

        HKEY_CLASSES_ROOT\Directory\shell\自定义的菜单名  

        HKEY_CLASSES_ROOT\Directory\shell\自定义的菜单名\command

          值名称:(默认)     类型:REG_SZ      数据:关联程序的完全限定名称


实现:C# WinForm 

using Microsoft.Win32;

private void AddFileContextMenuItem(string itemName, string associatedProgramFullPath)
{
    //创建项:shell 
    RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"*\shell",true);
    if (shellKey == null)
    {
        shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");  
    }

    //创建项:右键显示的菜单名称
    RegistryKey rightCommondKey = shellKey.CreateSubKey(itemName);
    RegistryKey associatedProgramKey= rightCommondKey.CreateSubKey("command");

    //创建默认值:关联的程序
    associatedProgramKey.SetValue(string.Empty, associatedProgramFullPath);

    //刷新到磁盘并释放资源
    associatedProgramKey.Close();
    rightCommondKey.Close();
    shellKey.Close(); 
}


private void AddDirectoryContextMenuItem(string itemName, string associatedProgramFullPath)
{
    //创建项:shell 
    RegistryKey shellKey = Registry.ClassesRoot.OpenSubKey(@"directory\shell", true);
    if (shellKey == null)
    {
        shellKey = Registry.ClassesRoot.CreateSubKey(@"*\shell");  
    }

    //创建项:右键显示的菜单名称
    RegistryKey rightCommondKey = shellKey.CreateSubKey(itemName);
    RegistryKey associatedProgramKey = rightCommondKey.CreateSubKey("command");

    //创建默认值:关联的程序
    associatedProgramKey.SetValue("", associatedProgramFullPath);


    //刷新到磁盘并释放资源
    associatedProgramKey.Close();
    rightCommondKey.Close();
    shellKey.Close(); 
}

Reference: http://msdn.microsoft.com/en-us/library/cc144148(VS.85).aspx

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有