【问题标题】:Start WPF application with arguments使用参数启动 WPF 应用程序
【发布时间】:2019-03-07 13:52:33
【问题描述】:

我正在尝试实现一种通过 Windows 任务计划和 CMD 使用特定参数启动 WPF 应用程序的方法。我已经添加了下面的代码。

protected override void OnStartup(StartupEventArgs e)
        {

            Logger.Info(e.Args.Length);

            for (int i = 0; i != e.Args.Length; ++i)
            {
                if (e.Args[i] == "test")
                {
                    Logger.Info($"G");
                }
                else
                {
                    Logger.Info($"B");
                }
            }
}

当我开始发布应用程序并通过 CMD 启动它或将其安排在带有参数的任务计划中时,e.Args.Length 为 0。但是当我在 Properties > Debug > Command line arguments 中添加一个参数时,它确实有效。 知道我错过了什么吗?

【问题讨论】:

  • 这是你要找的东西吗stackoverflow.com/questions/11769113/…
  • @GK 这个我试过了,但是这个有同样的问题
  • 看起来您正在创建一个 ClickOnce 应用程序,对吧?您是否尝试过使用AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData 获取参数?
  • @LittleBit 我刚试过,但我只是得到一个 NullReference
  • 您是如何尝试启动该应用程序的?喜欢 Sham 提供的 Format 吗?

标签: c# wpf arguments scheduled-tasks startup


【解决方案1】:

根据问题的评论,我认为问题在于 Start-Arguments 传递错误。 ClickOnce 应用程序不像 .exe 文件那样工作,由于安全原因,不能使用 CMD 中的参数启动 (Source)

我建议你看看this,它很好地描述了如何通过查询字符串将参数传递给应用程序。

【讨论】:

    【解决方案2】:

    要使用命令参数运行应用程序表单 cmd,请使用以下格式 -

    C:\StackOverflow\Bin\Debug> StackOverflow.exe arg1 arg2
    

    【讨论】:

    • 我做了,但还是不行。它不是 .exe 而是 .application。这有关系吗?
    • @JasonLie 它是一个 clickonce 应用程序吗?应用程序是否启动或您有任何错误?你能分享一下命令吗?
    • 命令只是'Program.application test'。它确实启动了,但是当我打印参数数组的长度时,它显示 0
    • 发布时有什么方法可以将其更改为 .exe?
    • @JasonLie 你是如何创建.Application 文件的?据我所知,它是通过ClickOnce 创建的,并且会有不同的机制将参数发送到ClickOnce 应用程序。
    【解决方案3】:

    您需要在System 命名空间中使用Environment 类并使用GetCommandLineArgs() 方法来检索参数。

    例如,

    Args = Environment.GetCommandLineArgs();
    

    【讨论】:

      猜你喜欢
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多