【问题标题】:C# Windows 'Open With >' Context menu behaviour [duplicate]C#Windows'打开方式>'上下文菜单行为[重复]
【发布时间】:2010-09-24 15:13:12
【问题描述】:

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

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

我的程序需要支持什么才能使用此机制? 我的程序可能需要对 Windows 执行什么操作才能启用上下文菜单支持?

我想知道是否有人可以为我指明有关此主题的好文章/教程的方向。

【问题讨论】:

标签: c# windows contextmenu open-with


【解决方案1】:

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说怎么做

或者您可以以正常方式手动将其添加到 open with 列表中。

【讨论】:

    【解决方案2】:

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

    就严格使用“打开方式...”来让您的应用程序仅显示它可以打开的文件而言,这更容易一些。这些由 Windows 使用注册表中两个位置的注册表项进行管理:

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

    使用 regedit 查看一些现有的,然后使用 Registry 类为您想要的扩展创建一个新键。

    【讨论】:

      猜你喜欢
      • 2016-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2013-08-03
      • 2013-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多