【问题标题】:what is the difference between ProcessStartInfo's UseShellExecute and CreateNoWindow?ProcessStartInfo 的 UseShellExecute 和 CreateNoWindow 有什么区别?
【发布时间】:2013-03-21 21:59:06
【问题描述】:

如果我要编写一个控制台应用程序来启动另一个控制台应用程序作为新进程,并使用默认的“UseShellExecute”和“CreateNoWindow”值,结果是控制台应用程序窗口旁边会出现一个新的命令行窗口:

   UseShellExecute=true and CreateNoWindow=false

现在,如果我要使用以下内容,将不会创建新窗口,但已启动进程的输出将出现在启动它的应用程序的窗口中:

   UseShellExecute=false and CreateNoWindow=false

如果我使用以下内容,则不会创建新窗口,启动进程的输出也不会出现在启动它的应用程序的窗口中:

   UseShellExecute=false and CreateNoWindow=true

但是好像UseShellExecute=true时“CreateNoWindow”没有效果,那么UseShellExecute=true时“CreateNoWindow”起什么作用呢?是否仅当作为新进程启动的应用程序是 Forms 应用程序时才适用?

【问题讨论】:

    标签: .net process windows-shell


    【解决方案1】:

    它没有任何作用。规则是 CreateNoWindow 只有在以下情况下才会生效:

    1. 您使用 UseShellExecute = false 以便使用 CreateProcess() winapi 启动程序
    2. 您启动的程序是控制台模式应用程序。

    如果应用程序是创建自己的窗口的本机 Windows GUI 应用程序,那么您可以要求它不使用 WindowStyle = ProcessWindowStyle.Hidden 创建可见窗口。然而,有很多程序忽略了这个请求。他们应该,阻止它的唯一方法是通过任务管理器。下一个合理的选择是 ProcessWindowStyle.Minimized

    【讨论】:

      猜你喜欢
      • 2012-05-01
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      • 2015-03-26
      相关资源
      最近更新 更多