双击 Word 文档时,Word 会自动运行并加载文档。
对我的 C# 应用程序执行相同操作需要哪些步骤?
换句话说,假设我的应用程序使用“.XYZ”数据文件。我知道如何在双击 .XYZ 数据文件时告诉 Windows 启动我的应用程序。 但是我如何在我的应用程序中找出选择了什么数据文件以便我可以加载它?
双击 Word 文档时,Word 会自动运行并加载文档。
对我的 C# 应用程序执行相同操作需要哪些步骤?
换句话说,假设我的应用程序使用“.XYZ”数据文件。我知道如何在双击 .XYZ 数据文件时告诉 Windows 启动我的应用程序。 但是我如何在我的应用程序中找出选择了什么数据文件以便我可以加载它?
虽然这是一个 VB.NET 解决方案,但本文详细介绍了如何在注册表中为您的应用程序创建文件关联,以及如何在启动应用程序以进行正确的文件处理时检索命令参数。
它看起来很容易移植到 C#。
我认为您正在寻找的是命令行参数。例如,如果您查看 .doc 的 Open 操作,您可能会看到类似“word.exe %1”的内容。Windows 将获取文件名并将其替换为 %1,然后执行命令“word.exewhatever.doc”。然后在应用程序中,您可以看到作为参数传递到程序中的内容,请参阅这篇 MSDN 文章了解更多详细信息。
我相信这只是一个传递到您的应用程序中的命令行参数。然后您可以使用 Environment.GetCommandLineArgs 阅读它。我知道如果您将文件拖放到您的应用程序中,情况就是如此。我还没有完成您所描述的自己,但我认为它的工作方式相同。
我在不久前从事的一个项目中做到了这一点,并且手头没有源代码,但我相信它真的归结为:
//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 is empty when the application is normally started, but when you've properly linked in the association to your .xyz file, when one of those files is selected, your application will be launched with the file location as the first element of the string []。当然,无论是在 program.cs 还是您的启动表单中,我都会添加验证,但在基本级别,我相信这是您需要做的。