将参数传递给另一个WPF应用程序不起作用

本文关键字:应用程序 不起作用 WPF 另一个 参数传递 | 更新日期: 2023-09-27 18:16:46

当从一个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.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项目文件夹中复制Work.exe(不是Work.application)到我的桌面,并从

更改路径
@"C:'Users'User'Desktop'Work.application" to
@"C:'Users'User'Desktop'Work.exe"

并再次运行我的第一个程序,它与第一个函数和第二个函数

那么为什么它与EXE一起工作,而不是与发布的应用程序一起工作呢?

编辑:我通过传递两个参数测试了这两个函数,抛出了调试器,它工作,但不是通过将其传递给发布的应用程序,只有EXE工作。

将参数传递给另一个WPF应用程序不起作用

对于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快捷方式运行ClickOnce应用程序,而不是。application文件本身。