如何使用我的应用程序打开文件?

时间:2011-02-05 19:03:55

标签: c#-4.0

好的,您知道如何在Microsoft Excel或Adobe Acrobat Reader等程序中单击资源管理器中的文件,它将打开相关程序。这就是我希望我的应用程序做的事情。现在,我知道如何在Windows中设置文件关联,以便它知道每个扩展的默认程序。我的问题是当我双击文件时,如何让我的应用程序打开文件。

我使用谷歌搜索网页,我搜索了msdn网站,我搜索了几个论坛,包括这个,但我没有找到任何解释如何实现这一点。我猜这与主方法的参数有关,但这只是猜测。

如果有人能指出我正确的方向,我可以从那里拿走它。在此先感谢您的帮助。

沙恩

4 个答案:

答案 0 :(得分:10)

在Windows中设置关联将在命令行上将文件名发送到您的应用程序。

您需要阅读应用程序main函数中的事件参数,以便读取文件路径并能够在您的应用程序中打开它。

请参阅thisthis,了解如何访问main方法中的命令行参数。

static void Main(string[] args)
{
    System.Console.WriteLine("Number of command line parameters = {0}", args.Length);

    foreach (string s in args)
    {
        System.Console.WriteLine(s);
    }
}

答案 1 :(得分:2)

当您打开文件时,如上所述设置了关联,您的应用程序将以包含文件路径的第一个参数启动。

通过点击关联文件打开应用程序后,您可以通过从args方法打印出main,以一种简单的方式尝试此操作。第0个元素应该是文件的路径。

现在,如果您成功达到了这一点,那么您现在需要做的就是读取给定文件的内容。我相信你会在这里找到更多关于如何做到这一点的资源。

答案 2 :(得分:2)

我想这就是你要找的东西:

FileInfo fi = new FileInfo(sfd.FileName); //the file you clicked or saved just point
                                          //to the right file location to determine
                                          //full filename with location info

// opening file
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @fi.FullName;
startInfo.WindowStyle = ProcessWindowStyle.Normal;

Process process = new Process();
process.StartInfo = startInfo;
process.Start();

答案 3 :(得分:0)

您需要为文件扩展名创建注册表项。 This page描述的很好,您需要设置哪些密钥(参见«3.如何创建文件关联?»)。