C#Windows'Open with>'上下文菜单行为

时间:2010-09-24 15:13:12

标签: c# windows contextmenu open-with

  

可能重复:
  Filetype association with application (C#)

我正在编写一个C#Windows应用程序来可视化和修改'.build'文件(nant脚本)。我希望用户能够在Windows资源管理器中右键单击.build文件并选择“打开方式>”允许在我的应用程序中修改文件的选项。

我的程序需要支持什么才能使用此机制? 我的程序可能需要做什么才能启用上下文菜单支持?

我想知道是否有人能指出我关于这个主题的好文章/教程的方向。

2 个答案:

答案 0 :(得分:4)

Open With命令只是传递文件的路径作为应用程序的第一个参数,所以你需要做的就是

public static void Main(string[] args)
{
    if(args[0] != null)
    {
       //args[0] contans a path to the file do whatever you need to do to display it
    }
    else
    {
       //Start normally
    }
}

要自动将您的程序置于列表中,您需要在HKEY_CLASSES_ROOT\YOUR_EXT\中添加一些注册表项。 Here is a SO answer说怎么做

或者您可以手动将其添加到打开状态,并以正常方式列出。

答案 1 :(得分:2)

看一下这篇博文:Shell Extensions - Context Menu。它有一个简单的“包装器”代码,用于Windows shell上下文菜单的某些COM挂钩。将它放在GAC中,当您右键单击时,您的菜单将作为右键单击上下文菜单的子菜单包含在内。

严格使用“Open With ...”使您的应用程序仅显示它可以打开的文件,这样会更容易一些。这些由Windows在注册表中的两个位置使用注册表项进行管理:

  1. HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .FileExtension \ OpenWithList(为当前用户安装)
  2. HKEY_CLASSES_ROOT \ .FileExtension \ OpenWithList(为所有用户安装)
  3. 使用regedit查看一些现有的,然后使用Registry类为您想要的扩展创建一个新密钥。