【问题标题】:Passing parameters from one app to the other将参数从一个应用程序传递到另一个应用程序
【发布时间】:2014-03-21 20:04:19
【问题描述】:

从这个线程继续Starting application before target application

我有一个应用程序,它在打开 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被串起来后的值为

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

编辑:

感谢NK的回答。

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

现在,当我不更改名称(例如,我将其保留为 INFOPATH.EXE)时,它会按预期工作,但是如果它被称为除此之外的任何其他名称,则会出现错误。

很遗憾,我需要先打开我的应用程序。

【问题讨论】:

  • 我将它标记为 c#,语言确实会影响参数的传递方式。
  • 你得到什么错误?
  • Jason 看到最后一行问题,我使用的是完整路径。
  • humpty - 没有错误只是 Windows 遇到了错误(没有具体的)

标签: c# infopath


【解决方案1】:

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

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

【讨论】:

  • 谢谢,看我的编辑。基本上是因为我修改了 INFOPATH.exe 文件名,它会引发错误。
  • 最后我只是创建了一个子文件夹,将“真正的”可执行文件放入其中并开始该过程。虽然这个答案没有解决我的问题,但它是“正确的”
  • “我刚刚创建了一个子文件夹,将“真正的”可执行文件卡在那里”,它可能有依赖关系,所以放入单独的文件夹可能会破坏依赖关系。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2013-03-01
  • 1970-01-01
  • 2015-09-27
相关资源
最近更新 更多