[英]Passing Arguments to another WPF Application doesn't work
从一个WPF应用程序向另一个WPF应用程序传递两个参数时出现问题。 我将第二个WPF应用程序发布到我的桌面上,我想用我的第一个WPF应用程序启动它。
第一程序:
public MainWindow()
{
InitializeComponent();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = @"C:\Users\User\Desktop\Work.application";
startInfo.Arguments = "test 1234";
Process.Start(startInfo);
}
为了在第二个程序中获取参数,我尝试了以下代码
1,使用Environment在Mainwindow中获取参数.GetCommandLineArgs()=>不起作用
public MainWindowSecondProgram()
{
InitializeComponent();
string[] args = Environment.GetCommandLineArgs();
foreach (String element in args)
{
MessageBox.Show(element);
}
}
2.使用启动功能在App中获取参数=>不起作用
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
foreach (string element in e.Args)
{
MessageBox.Show(element);
}
}
}
现在,如果我将Visual Studio Project文件夹中的Work.exe(不是Work.application)复制到我的桌面,并从
@"C:\Users\User\Desktop\Work.application" to
@"C:\Users\User\Desktop\Work.exe"
然后再次运行我的第一个程序,它可以与第一个功能和第二个功能完美配合。
那么,为什么它可以与EXE一起使用,但不能与已发布的应用程序一起使用呢?
编辑:我通过传递两个参数引发调试器来测试这两个函数,并且它可以工作,但是没有通过将其传递给已发布的应用程序,只有EXE可以工作。
对于Windows Store应用程序,您需要使用Application.OnLaunched
。 试试这个代码:
public partial class App : Application
{
protected override void OnLaunched(LaunchActivatedEventArgs args)
{
MessageBox.Show(args.Arguments);
}
}
请注意,您必须自己将该字符串转换为数组。
要在ClickOnce应用程序中读取参数,请使用:
AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
您可以在这里阅读更多内容 。
另外,不确定,但是您可能需要通过.appref-ms快捷方式(而不是.application文件本身)运行ClickOnce应用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.