【问题标题】:Invoke WPF application from Winform Application with parameters使用参数从 Winform 应用程序调用 WPF 应用程序
【发布时间】:2019-04-13 16:32:43
【问题描述】:

如何从 Windows 窗体运行/调用 WPF 应用程序 (.exe)?我知道它可以如下所示完成:

 Process.Start(@"C:\ABC\WPF.exe");

但我想从 winform 应用程序向 WPF 应用程序发送一些参数。怎么办?

【问题讨论】:

  • Process.Start() 有一些重载。 One of them 允许提供参数。

标签: c# wpf winforms


【解决方案1】:

参考here的完整代码

您可以从您的 winform 应用程序中传递参数,例如

Process.Start(new ProcessStartInfo(@"C:\repos\WpfApp.exe", "Args from WinForms"));

并像在 WPF 应用程序中接收一样

public partial class App : Application
    {
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            if (e.Args.Length > 0)
            {
                MessageBox.Show($"You have passed:{e.Args.Length} arguments," +
                    $" value are {string.Join( ",",e.Args)}");
            }
        }
    }

【讨论】:

  • 我还有 1 个疑问。 wpf项目exe的路径不能这样硬编码。我们有一个 win 表单应用程序 [主应用程序] 和一个 wpf 应用程序。在运行 winform 应用程序时,有时需要调用 wpf 应用程序。那时我们如何指定 wpf 应用程序的路径?
  • 将您的 WPF 应用程序二进制文件放在与您的 WinForm 应用程序相同路径的文件夹中,并使用相对路径。 "./WPFApp/Wpfapp.exe"
  • @VikasGupta "./WPFApp/Wpfapp.exe" 将不起作用。如果您在 winform 项目中包含 wpf 二进制文件,这应该可以:AppDomain.CurrentDomain.BaseDirectory + @"WPFApp\WpfApp.exe";
【解决方案2】:

您可以使用带有几个参数的相同方法。 所以在你的情况下

var procStart = System.Diagnostics.Process.Start(@"C:\ABC\WPF.exe", params);

【讨论】:

    猜你喜欢
    • 2013-05-10
    • 2013-09-28
    • 2013-05-24
    • 2011-04-10
    • 1970-01-01
    • 2012-08-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多