2

好的,我真的很努力,并尝试了一些关于不同事物的问题,比如如何调试,但到目前为止我还没有多少运气。基本上,我的应用程序出现了,用户做了一些事情。在某些时候,用户可以将他们的设置保存到扩展名为 .abc(原始文本格式)的输出文件中。此扩展程序已注册并可由应用程序编辑。因此,用户双击该文件,它会将应用程序带到主窗体视图。这一切都很好,花花公子。如果我在记事本中查看 .abc 文件,我可以看到我保存的所有设置。我的问题是,如何让应用程序读取几行文本,并知道程序是从文件中输入的,而不是仅仅选择从程序中运行它?例如,

firstname=john
lastname=hancock
address=1234 somewhere road, atlanta, GA  12345

当用户双击文件启动程序时,我希望表单能够识别有启动参数,并在表单上填写适当的内容。所以也许表格会显示“你好约翰汉考克,欢迎回来”或类似的东西。这是一种可能吗?我可以让应用程序强制您选择文件->打开并以这种方式读取文本文件,但首选方法是一次性完成所有操作。

谢谢!

4

3 回答 3

2

当你启动程序时,你用来启动它的文件的文件名在

args[0]

在你的主要方法中。

您可以做的是检查以确保,args.Length > 0然后使用args[0]您选择的任何文件解析方法加载具有任何名称的文件。

于 2012-07-24T19:56:23.457 回答
2

要让您的程序在单击其扩展之一时运行,请使用 Windows 注册表。如果您创建一个安装项目,可以自动为您注册扩展(它们的图标和程序)。看看这里这里

正如在@Sam I am的回答中,当程序运行时会收到您指定如何处理文件的参数。

于 2012-07-24T19:57:56.723 回答
1

尤里卡!至少在我的环境中,我终于找到了(a)答案。我正在使用 Visual Studio 2010 Express Edition,并且已将文件与扩展名相关联,因此当您双击它时,它会启动应用程序。为了获取该文件的路径,它不是作为参数存储,而是存储在 appdomain 属性中。如果执行此命令:

String test = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData[0];

变量测试最终看起来像这样:

“c:\dir/dir2/dir3/test.abc”

From there, I can read the file and get the contents, or anything else I want to do with it.

I would especially like to thank Desolator. Based on his input, I was better able to search the internet with the right keywords to finally find the answer!

Happy coding!

于 2012-07-25T02:10:15.937 回答