将参数传递给另一个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工作。
对于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文件本身。