我试图从另一个wpf应用程序调用一个wpf应用程序。 调用wpf应用程序进行调用
ProcessStartInfo BOM = new ProcessStartInfo();
BOM.FileName = @"D:\WPFAPPLICATION.exe";
BOM.Arguments = temp;
Process.Start(BOM);
现在在调用的应用程序中,我尝试检索使用
传递的参数 string arguments =Process.GetCurrentProcess().StartInfo.Arguments;
然而,这些论点没有通过。这是为什么?
我还尝试了另一种方法:
public partial class App : Application
{
public static String[] mArgs;
private void Application_Startup(object sender, StartupEventArgs e)
{
if (e.Args.Length > 0)
{
mArgs = e.Args;
}
}
}
}
然而这也不起作用!!! 请帮助!!
答案 0 :(得分:3)
尝试使用Environment类来获取命令行参数。
string[] args = Environment.GetCommandLineArgs
或使用传递给WPF应用程序的主方法(App.xaml.cs)的字符串[]。
public partial class App : Application {
protected override void OnStartup(StartupEventArgs e) {
string[] args = e.Args;
}
}
注意:强> 电话
string arguments =Process.GetCurrentProcess().StartInfo.Arguments;
不会返回任何值。请参阅此MSDN条目
如果未使用Start方法启动进程,则StartInfo属性不会反映用于启动进程的参数。例如,如果使用GetProcesses获取计算机上运行的进程数组,则每个进程的StartInfo属性不包含用于启动进程的原始文件名或参数。
答案 1 :(得分:2)
如果有兴趣的话,我终于找到了我的问题的解决方案。 在调用应用程序中,我保留了我之前使用的相同代码:
ProcessStartInfo BOM = new ProcessStartInfo();
BOM.FileName = @"D:\WPFAPPLICATION.exe";
BOM.Arguments = temp;
Process.Start(BOM);
在被调用的应用程序中,为了成功接收参数,我只需要:
System.Text.StringBuilder strbuilder= new System.Text.StringBuilder();
foreach (String arg in Environment.GetCommandLineArgs())
{
strbuilder.AppendLine(arg);
barcode = arg;
}
psnfo = strbuilder.ToString();
我没有以正确的方式处理传递给流程的参数
所以显示psnfo
代码返回:
D:\WPFAPPLICATION.exe temp
来源:http://www.codeproject.com/Questions/386260/Using-process-start-in-a-wpf-application-to-invoke