【发布时间】: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 遇到了错误(没有具体的)