文件名未传递给main

时间:2009-09-04 17:22:32

标签: c# winforms

我有一个应用程序,我有一个与之关联的文件类型。当我双击该文件时,它会打开我的应用程序,但文件名/路径永远不会传递给我的应用程序。但是,如果我将文件拖到图标上,它确实有效。这是main():

    static void Main(string[] filenames)
    {
        Form1 form = null;

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        form = new Form1();
        if (filenames != null && filenames.Length > 0)
            form.FileName = filenames[0];
        Application.Run(form);
    }

filenames.length每次都出现0(除非我将文件拖放到应用程序上)

3 个答案:

答案 0 :(得分:2)

您的文件关联是否包含%1或“%L”作为命令行的一部分?这是将文件名传递给应用程序所必需的。 (“%L”表示完整的长文件名,%1是缩短的8.3文件名。)

在应用程序图标上删除文件时,应用程序确实收到文件名的原因是因为Windows在此处不使用文件关联。事实上,它适用于任何程序,无论是否有文件关联。在这些情况下,它猜测您可能希望以文件名作为参数启动应用程序。

答案 1 :(得分:1)

你应该试试

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData

也是一个字符串[]

答案 2 :(得分:1)

您需要在文件关联设置中使用%1或%L来“告诉”Windows资源管理器在双击文件时将文件名传递给您的应用程序。一个例子:
http://hypography.com/forums/tutorials-and-how-tos/15876-windows-file-association-tutorial.html