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

可能重复:
文件types与应用程序(C#)的关联

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

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

我想知道是否有人可以指出我在这个问题上的好文章/教程的方向。

“打开方式”命令只是将文件的路径作为第一个参数传递给应用程序,所以您只需将其作为参数

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\添加一些注册表项。 这是一个SO回答说如何做到这一点

或者你可以用正常的方式手动添加到列表中。

看看这个博客文章: 外壳扩展 – 上下文菜单 。 它有一个简单的“包装器”的代码,以一些COM挂钩到Windows外壳上下文菜单。 把它放在GAC中,当你右键点击时,你的菜单将被作为右键菜单的子菜单。

至于严格使用“打开方式…”使您的应用程序只显示它可以打开的文件,这是更容易一些。 这些由Windows使用注册表中的两个位置的注册表项进行管理:

  1. HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts \ .FileExtension \ OpenWithList(为当前用户安装)
  2. HKEY_CLASSES_ROOT \ .FileExtension \ OpenWithList(为所有用户安装)

看看现有的一些使用注册表编辑器,然后使用注册表类为您想要的扩展名创建一个新的密钥。