您的位置:首页 > 编程语言 > C#

C# 如何在 Windows&nbsp…

2014-06-07 17:46 477 查看
方法:通过改写注册表实现

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

  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://blog.sina.com.cn/s/blog_752 a806
ca76a0100y5yv.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: