[英]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.