【发布时间】:2010-09-30 07:56:37
【问题描述】:
当您双击 Word 文档时,Word 会自动运行并加载文档。
对我的 C# 应用程序执行相同操作需要哪些步骤?
换句话说,假设我的应用程序使用“.XYZ”数据文件。我知道当双击 .XYZ 数据文件时如何告诉 Windows 启动我的应用程序。 但是如何在我的应用程序中找出选择了哪个数据文件以便加载它?
【问题讨论】:
标签: c# double-click
当您双击 Word 文档时,Word 会自动运行并加载文档。
对我的 C# 应用程序执行相同操作需要哪些步骤?
换句话说,假设我的应用程序使用“.XYZ”数据文件。我知道当双击 .XYZ 数据文件时如何告诉 Windows 启动我的应用程序。 但是如何在我的应用程序中找出选择了哪个数据文件以便加载它?
【问题讨论】:
标签: c# double-click
虽然这是一个 VB.NET 解决方案,但this article 提供了有关如何在注册表中为您的应用程序创建文件关联以及如何在您的应用程序被启动以执行正确的文件处理时检索命令参数的详细信息.
它看起来很容易移植到 C#。
【讨论】:
【讨论】:
我认为您正在寻找的是命令行参数。例如,如果您查看 .doc 的 Open 操作,您可能会看到类似“word.exe %1”的内容。 Windows 将获取文件名并将其替换为 %1,然后执行命令“word.exewhatever.doc”。然后在应用程序中,您可以看到作为参数传递给程序 see this MSDN article for more details 的内容。
【讨论】:
我相信它只是传递到您的应用程序的命令行参数。然后您可以使用 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是空的,当应用程序通常启动时,但是当您在关联中正确链接到.xyz文件时,选择其中一个文件时,您的应用程序将使用文件位置作为第一个元素启动的字符串[]。当然,无论是在 program.cs 还是您的启动表单中,我都会添加验证,但在基本级别,我相信这是您需要做的。
【讨论】: