Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用应用程序打开文件_C#_Xml_Wpf_File Association - Fatal编程技术网

C# 使用应用程序打开文件

C# 使用应用程序打开文件,c#,xml,wpf,file-association,C#,Xml,Wpf,File Association,我有.xml文件来存储应用程序中的数据 现在我想单击.xml文件->使用从.xml文件加载的数据启动我的应用程序 是什么让应用程序运行xml解析方法 我不知道如何做到这一点,当我用我的应用程序打开.xml文件时到底会发生什么?Windows是否使用.xml文件路径或其他方式获取应用程序的某种参数?另外,WPF似乎没有通常处理这些参数的Main()方法 知道怎么做吗?首先,您不能通过单击xml文件来运行应用程序。您要做的是通过按钮单击或任何事件调用某些方法,这些事件通过文件读取器或流读取器读入xm

我有.xml文件来存储应用程序中的数据

现在我想单击.xml文件->使用从.xml文件加载的数据启动我的应用程序

是什么让应用程序运行xml解析方法

我不知道如何做到这一点,当我用我的应用程序打开.xml文件时到底会发生什么?Windows是否使用.xml文件路径或其他方式获取应用程序的某种参数?另外,WPF似乎没有通常处理这些参数的Main()方法


知道怎么做吗?

首先,您不能通过单击xml文件来运行应用程序。您要做的是通过按钮单击或任何事件调用某些方法,这些事件通过文件读取器或流读取器读入xml文件,并获取这些内容,并使xmldocument doc=new xmldocument()。然后是doc.LoadXml(filecontents)。然后,您可以使用内置的C#.NET方法(如doc.SelectSingleNode(节点名称))解析整个文档。

如果您试图查找与特定文件扩展名关联的程序,则有两种编程方式。第一种方法是执行一个名为的Win32方法。DllImport的外观如下所示:

[DllImport("shell32.dll")]
static extern int FindExecutable(string lpFile, string lpDirectory, [Out] StringBuilder lpResult);
第二种方法是查看注册表。要想知道双击XML文件会打开哪个应用程序,可以查看
HKEY\u CLASSES\u ROOT\.XML
。然后按照该条目进入
shell/open/command
。这将为您提供打开文件的应用程序名和路径。

因此,下面是我所做的:

我创建了自己的文件扩展名.xxx(里面只有纯xml),当我用我的应用程序打开它时,我使用

Environment.GetCommandLineArgs()


如果count>1,我将获得第二个参数,即带有文件绝对路径的字符串。然后我将字符串提取到处理文件打开的方法。

它被称为.Use
Environment.GetCommandLineArgs()
,它将返回一个
字符串[]
。索引0将是应用程序的路径,索引>=1将有参数。因此,如果打开与应用程序关联的文件,或者单击->将文件拖到可执行文件上,应用程序将使用两个参数运行(应用程序在[0]中的文件路径和文件在[1]中的文件路径)。当应用程序启动时,可以使用索引[1]处的此文件路径打开xml文件。希望这是有意义的。rshepp-工作完美谢谢。写下你的答案,这样我可以给你分数