C# 将参数从一个应用程序传递到另一个应用程序

C# 将参数从一个应用程序传递到另一个应用程序,c#,infopath,C#,Infopath,从这个线程开始 我有一个应用程序,在打开Microsoft InfoPath之前,它会传递一个参数(文件名)并执行一些注册表工作 我需要使用传递给原始应用程序的参数打开InfoPath 下面是我如何打开InfoPath的 System.Diagnostics.Process prc = new System.Diagnostics.Process(); prc.StartInfo.Arguments = ConvertArrayToString(Constants.Arguments); //p

从这个线程开始

我有一个应用程序,在打开Microsoft InfoPath之前,它会传递一个参数(文件名)并执行一些注册表工作

我需要使用传递给原始应用程序的参数打开InfoPath

下面是我如何打开InfoPath的

System.Diagnostics.Process prc = new System.Diagnostics.Process();
prc.StartInfo.Arguments = ConvertArrayToString(Constants.Arguments);
//prc.StartInfo.Arguments = "hello";
prc.StartInfo.FileName = Constants.PathToInfoPath;
prc.Start();
请注意,当我将参数设置为“hello”时,InfoPath会弹出一条消息,说明找不到文件“hello”,但当我将其设置为常量时,参数会出错,Windows会询问我是否要调试或关闭应用程序

下面是我如何在
Main(string[]args)

下面是
ConvertArrayToString

private string ConvertArrayToString(string[] arr)
{

    string rtn = "";
    foreach (string s in arr)
    {
        rtn += s;
    }

    return rtn;

}
我想是参数的格式导致了错误,知道为什么吗

设置字符串后,
参数
的值为

c:\users\accountname\Desktop\HSE-000403.xml
编辑:

多亏了N K的回答

问题是为了在打开InfoPath文件时打开我的应用程序,我已将InfoPath.EXE的名称更改为INFOPATH0.EXE,并且我的应用程序名为InfoPath.EXE,位于InfoPath文件夹中,因此打开文件时,我的应用程序将打开

现在,当我不更改名称(例如,我将其保留为INFOPATH.EXE)时,它会按预期工作,但是如果它被调用其他名称,则会出现错误


不幸的是,我需要先打开我的应用程序。

我尝试了下面的方法,效果很好。让我知道你得到了什么。(不要忘记更改文件的路径)


我将其标记为c#,该语言确实会影响参数的传递方式。您可能需要此信息。您可能会遇到什么错误?Jason请参阅问题的最后一行,我使用的是完整路径。humpty-没有错误,只是Windows遇到了错误(没有具体说明)。谢谢,请参阅我的编辑。基本上是因为我修改了INFOPATH.exe文件名,所以它会抛出一个错误。最后,我只是创建了一个子文件夹,将“真正的”可执行文件插入其中,并启动了该过程。虽然这个答案并没有解决我的问题,但它是“正确的”“我只是创建了一个子文件夹,将“真正的”可执行文件卡在其中”,它可能具有依赖性,因此放入单独的文件夹可能会打破依赖性。
c:\users\accountname\Desktop\HSE-000403.xml
class Program
{
    static void Main(string[] args)
    {
        System.Diagnostics.Process prc = new System.Diagnostics.Process();
        prc.StartInfo.Arguments = string.Join("", Constants.Arguments);
        prc.StartInfo.FileName = Constants.PathToInfoPath;
        prc.Start();
    }
}
public class Constants
{
    public static string PathToInfoPath = @"C:\Program Files (x86)\Microsoft Office\Office14\INFOPATH.EXE";
    public static string[] Arguments = new string[] { @"c:\users\accountname\Desktop\HSE-000403.xml" };
}