如果我要编写一个控制台应用程序,将另一个控制台应用程序作为新进程启动,并使用默认的“UseShellExecute”和“CreateNoWindow”值,结果是控制台应用程序窗口旁边会出现一个新的命令行窗口:
UseShellExecute=true and CreateNoWindow=false
现在,如果我要使用以下内容,则不会创建新窗口,但启动过程的输出将出现在启动它的应用程序的窗口中:
UseShellExecute=false and CreateNoWindow=false
如果我要使用以下内容,既不会创建新窗口,也不会在启动它的应用程序窗口中显示已启动进程的输出:
UseShellExecute=false and CreateNoWindow=true
但是当UseShellExecute = true时,似乎“CreateNoWindow”没有效果,那么当UseShellExecute = true时,“CreateNoWindow”会扮演什么角色呢?仅当作为新进程启动的应用程序是Forms应用程序时它是否适用?
答案 0 :(得分:4)
它没有任何作用。规则是CreateNoWindow仅在以下情况下具有效果:
如果应用程序是创建自己的窗口的本机Windows GUI应用程序,那么您可以要求它不使用WindowStyle = ProcessWindowStyle.Hidden创建可见窗口。但是有很多程序忽略了这个请求。他们应该只通过任务管理器来阻止它。下一个合理的选择是ProcessWindowStyle.Minimized