2011-01-22 65 views
1

我在Framework 3.5 SP1与WPF目前正在写的应用程序,我需要我的功能扩展到Windows资源管理器右键菜单,如Winzip或WinRAR或者任何人怎么回事,没有当用户右击一个文件或夹。操纵Windows资源管理器右键菜单

我做了很多的研究,有的说使用注册表,这之后我想,是相当不灵活。因为我需要我的上下文菜单中的子菜单,还有图标。

另一种方法,我发现,是shell编程,这是更讨厌的,但具有比注册表的方法很多很多更多的潜力。

Shell编程需要COM编程知识,需要时间学习。

对于我发现的关于修改windows explorer上下文菜单的所有文章,他们主要发表于2003年,2005年等,这是5年前,我的意思是说,经过5年的发展,是否有任何新技术可以使这可能在当前.net框架像3.5 SP1或4.0使用C#?

谢谢。

+0

可能这一块的DUP http://stackoverflow.com/questions/2194572/windows-shell-extension-with- c – 2011-01-22 06:30:08

回答

0

上的每个文件夹

这里添加到右键单击应用程序是如何添加任何应用程序上下文菜单,当你右键点击任何文件夹。这样你就不必一直走到开始菜单。当您右键单击任何文件夹时,您可以访问该应用程序,就像使用“发送至”一样。

  1. 打开注册表
  2. 转到HKEY_CLASSES_ROOT \文件夹\壳
  3. 添加一个新的关键的“壳牌”键并将其命名为任何你喜欢的。
  4. 给它当你右击一个文件夹,将出现一个默认值, 即则newkey(使用“&”没有 报价,任何性质的正面和 它可以让你使用键盘)

  5. 点击钥匙HKEY_CLASSES_ROOT \文件夹\壳\则newkey

  6. 添加新的键值名为命令
  7. 设置要运行
  8. 对于考试申请的(默认)值PLE:C:\ Program Files文件\的Internet Explorer \ IEXPLORE.EXE (包括完整路径,如果你需要它们的参数 )为您

编写代码....

编辑:

在C#代码(文件夹)

private void button1_Click(object sender, EventArgs e) 
    {   
     Microsoft.Win32.RegistryKey contextMenuKey = Registry.ClassesRoot.CreateSubKey(@"Folder\shell\MyName\command"); 
     //MyName is name to display 
     contextMenuKey.SetValue(null, @"c:\program files\internet explorer\iexplore.exe"); 
     //null or "" to set value in (Default), full path of your application 
    } 
+0

谢谢。但我想要的是比这更复杂一点。我想在左侧包含一个带有图标的菜单,并带有子菜单。 – VHanded 2011-01-23 10:19:17

0

要在Windows资源管理器右键菜单的附加条目您将需要在Windows注册表中添加两个子键HKEY_CLASSES_ROOT \ Folder \ shell

这些关键字是:

  1. Folder \ shell \ MyProduct:此键的值将显示为新窗口资源管理器上下文菜单项中的文本。您还可以通过向键1添加一个值并将其命名为“图标”,然后将图标的路径设置为值,将图标添加到上下文菜单项。

  2. Folder \ shell \ MyProduct \ command:设置您要启动的应用程序的路径。

这里是链接的详细信息和示例C#代码: http://newapputil.blogspot.in/2016/12/adding-new-item-to-context-menu-of.html

相关问题