繁体   English   中英

将参数从一个应用传递到另一个

[英]Passing parameters from one app to the other

从此线程继续在目标应用程序之前启动应用程序

我有一个应用程序,该应用程序传递了一个参数(文件名)并在打开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();

请注意,当我将Arguments设置为“ hello”时,InfoPath会弹出一条消息,提示找不到文件“ hello”,但是当我将其设置为Constants.Arguments时,出现错误,Windows询问我是否要调试或关闭应用程序。

这是我在Main(string[] args)设置Constants.Arguments的方法

static void Main(string[] args)
{
    Constants.Arguments = args;
    //...
}

这是ConvertArrayToString

private string ConvertArrayToString(string[] arr)
{

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

    return rtn;

}

我想参数的格式会引起错误,为什么?

Arguments后, Arguments的值为

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

编辑:

感谢NK的回答。

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

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

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

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

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" };
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM