winform应用程序,用于启动和读取具有自定义扩展名的文件

时间:2010-01-27 03:21:39

标签: c# winforms

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

3 个答案:

答案 0 :(得分:6)

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

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]将是传入的任何其他参数。

Offhand我找不到任何简单显示所有这些内容的示例,但Scott Hanselman有一个通过单个实例WinForms应用程序加载文件的好例子,差不多......

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

答案 1 :(得分:1)

是的,这是可能的。

我们的想法是,在单击您的应用程序时,您可以修改注册表项,以将扩展文件与您的应用程序相关联。

以下是草图:

  1. 使用here中的FileAssociation课程。
  2. 初始化它,设置所有参数。
  3. 以下是一个例子:

                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();
    

答案 2 :(得分:0)

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

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