代码之家  ›  专栏  ›  技术社区  ›  Mark T

从数据文件启动应用程序

  •  3
  • Mark T  · 技术社区  · 15 年前

    双击Word文档时,Word将自动运行并加载文档。

    要对我的C应用程序执行相同的操作,需要哪些步骤?

    换句话说,假设我的应用程序使用了“.xyz”数据文件。我知道如何告诉Windows在双击.xyz数据文件时启动我的应用程序。 但是,如何在应用程序中找到所选的数据文件,以便加载它?

    5 回复  |  直到 15 年前
        1
  •  0
  •   Timothy Carter    15 年前

    我在一个项目中做了这件事,我之前正在做这件事,但是我觉得源代码并不方便,但我相信它确实可以归结为:

        //program.cs
        [STAThread]
        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            if (args.Length > 0)
            {
                //launch same form as normal or different
                Application.Run(new Form1(args));
            }
            else
            {
                Application.Run(new Form1());
            }
        }
    

    当应用程序正常启动时,args为空,但当您正确地将关联链接到.xyz文件时,如果选择了其中一个文件,则应用程序将以文件位置作为字符串[]的第一个元素启动。当然,无论是在program.cs还是您的启动表单中,我都会添加验证,但在基本级别上,我相信这是您需要做的。

        2
  •  2
  •   Dillie-O    15 年前

    这是一个vb.net解决方案,但是 this article 详细介绍了如何在注册表中为应用程序创建文件关联,以及在启动应用程序以进行正确的文件处理时如何检索命令参数。

    它看起来很容易移植到C。

        3
  •  1
  •   Sarel Botha    15 年前

    参数应包含数据文件的路径。

    您可以调整此行为并传递其他参数。看看这幅图中的例子。这里,文件路径与%1一起传递。

    Quicktime File Association Dialog

        4
  •  1
  •   Kevin Loney    15 年前

    我认为您要查找的是命令行参数。例如,如果查看.doc的open操作,您可能会看到类似于“word.exe%1”的内容。Windows将使用文件名并将其替换为%1,然后执行命令“word.exe whatever.doc”。然后,从应用程序中,您可以看到作为参数传递到程序中的内容。 see this MSDN article for more details .

        5
  •  1
  •   nshaw    15 年前

    我相信它只是一个命令行参数,会传递到你的应用程序中。然后您可以使用environment.getcommandlineargs读取它。我知道如果你将一个文件拖放到你的应用程序中,情况就是这样。我没有做你描述的我自己,但我认为它的工作方式是一样的。