【问题标题】:winform application to launch and read from a file with custom extensionwinform 应用程序启动并从具有自定义扩展名的文件中读取
【发布时间】:2011-01-09 19:18:15
【问题描述】:

我正在使用 C# 构建一个 Windows 窗体应用程序,当用户单击具有自定义扩展名的文件时需要启动该应用程序(例如 filename.mycustomextension) 我打算在 filename.mycustomextension 文件中放一个 url。当用户点击这个文件时,我们的 winform 应用程序应该启动并读取这个文件的内容。 可以这样做吗?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    首先,最明显的是,您需要通过 shell 中的“打开方式”、安装程序或直接在注册表中将文件扩展名与应用程序相关联。

    MSDN - Best Practices for File Associations

    然后从那里开始它真的很简单。

    static class Program { [STAThread] static void Main() { string[] args = Environment.GetCommandLineArgs(); string text = File.ReadAllText(args[1]); // ... } }
    • args[0] 是应用程序路径。
    • args[1] 将是文件路径。
    • args[n] 将是传入的任何其他参数。

    临时我找不到任何简单地展示所有这些的示例,但 Scott Hanselman 有一个很好的示例,通过单个实例 WinForms 应用程序加载文件,大致相同...

    http://www.hanselman.com/blog/CommentView.aspx?guid=d2f676ea-025b-4fd6-ae79-80b04a34f24c

    【讨论】:

      【解决方案2】:

      是的,有可能。

      这个想法是,当您的应用程序被点击时,您修改注册表项,以将扩展文件与您的应用程序相关联。

      以下是草图:

      1. 使用来自hereFileAssociation 类。
      2. 初始化,设置所有参数。

      这是一个例子:

                  var FA = new FileAssociation();
                  FA.Extension = "blah";
                  FA.ContentType = "application/blah";
                  FA.FullName = "blah Project File";
                  FA.ProperName = "blahFile";
                  FA.AddCommand("open", string.Format("\"{0}\" \"%1\"", System.Reflection.Assembly.GetExecutingAssembly().Location));
                  //"C:\\mydir\\myprog.exe %1");
                  FA.IconPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
                  FA.IconIndex = 0;
                  FA.Create();
      

      【讨论】:

        【解决方案3】:

        如果您打算从浏览器启动您的应用程序,则存在安全问题,但除此之外 - 是的。

        您只需在用户的机器上安装应用程序并将您的 .mycustomextension 与应用程序相关联。 http://support.microsoft.com/kb/185453

        【讨论】:

          猜你喜欢
          • 2022-12-25
          • 2013-05-10
          • 2013-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多