【问题标题】:Starting console app as new process hides window在新进程隐藏窗口时启动控制台应用程序
【发布时间】:2014-01-22 11:46:13
【问题描述】:

我正在尝试创建一个自修补应用程序,如下所示:

  1. .Net WPF 应用程序确定(自身)是否存在新版本
  2. 此 WPF 应用启动一个 .Net 控制台应用 (process.Start) 以执行必要的操作
  3. 然后控制台应用程序执行一些任务并启动新版本的 .Net WPF 应用程序 (process.Start)

一切正常,即我可以看到正在按要求启动的进程,但是当控制台应用程序启动 WPF 应用程序的新实例时,没有可见的窗口 - 从用户的角度来看,它似乎没有加载任何内容。

我需要考虑这种方法的任何缺陷 - 使用控制台应用程序重新启动基于 Windows 的 UI?

启动控制台的代码(在控制台端再次启动 WPF 应用程序相同)

var info = new ProcessStartInfo(commandFileName) 
{ 
    Arguments = args 
} 
Process.Start(info); 

使用它看不到控制台应用程序。

【问题讨论】:

  • 控制台应用程序是否可见?如果您需要体面的帮助,请向我们展示您的代码(例如,您启动另一个进程的行)!

标签: c# .net wpf console-application


【解决方案1】:

This post 可能会帮助您显示控制台。然后添加 Console.ReadLine() 应该保持窗口打开。

【讨论】:

    【解决方案2】:

    好吧,我的错误 - 错过了谜题中最关键的部分......

    它是一个执行实际Process.Start 调用的 Windows 服务,即原始 WPF 应用程序对该服务执行调用,该服务启动控制台应用程序(然后最终重新启动 WPF 应用程序)。

    因此很清楚问题出在哪里: Windows 服务不会与桌面交互,因此虽然进程实际启动,但不会看到任何窗口。

    我在阅读以下文章后解决了这个问题: http://www.codeproject.com/Articles/35773/Subverting-Vista-UAC-in-Both-32-and-64-bit-Archite

    【讨论】:

      猜你喜欢
      • 2013-03-22
      • 2011-04-20
      • 2015-10-04
      • 2013-07-04
      • 2016-03-30
      • 1970-01-01
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多