首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.NET - WindowStyle =隐藏与CreateNoWindow = true?

.NET - WindowStyle =隐藏与CreateNoWindow = true?
EN

Stack Overflow用户
提问于 2011-02-24 00:47:43
回答 3查看 38.2K关注 0票数 68

当我启动一个新进程时,如果我使用

代码语言:javascript
复制
WindowStyle = Hidden

或者

代码语言:javascript
复制
CreateNoWindow = true

ProcessStartInfo类的属性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-24 01:04:35

正如汉斯所说,WindowStyle是传递给流程的建议,应用程序可以选择忽略它。

CreateNoWindow控制子进程的控制台工作方式,但它不能单独工作。

CreateNoWindow与UseShellExecute的协同工作方式如下:

要在没有任何窗口的情况下运行流程,请执行以下操作:

代码语言:javascript
复制
ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.CreateNoWindow = true; 
info.UseShellExecute = false;
Process processChild = Process.Start(info); 

在其自己的窗口中运行子进程(新控制台)

代码语言:javascript
复制
ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.UseShellExecute = true; // which is the default value.
Process processChild = Process.Start(info); // separate window

在父控制台窗口中运行子进程

代码语言:javascript
复制
ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.UseShellExecute = false; // causes consoles to share window 
Process processChild = Process.Start(info); 
票数 85
EN

Stack Overflow用户

发布于 2011-02-24 00:54:09

CreateNoWindow仅适用于控制台模式的应用程序,它不会创建控制台窗口。

WindowStyle仅适用于本地Windows GUI应用程序。它是传递给这样一个程序的WinMain() entry point的提示。第四个参数nCmdShow,告诉它如何显示它的主窗口。这与桌面快捷方式中的“运行”设置显示的提示相同。请注意,“隐藏”在那里不是一个选项,很少有适当设计的Windows程序会接受这个请求。因为它窥探用户,所以他不能再激活程序,只能用任务管理器杀死它。

票数 22
EN

Stack Overflow用户

发布于 2011-02-24 00:57:18

使用反射器时,如果设置了UseShellExecute,则看起来使用WindowStyle,否则使用CreateNoWindow

在MSDN的示例中,您可以看到他们是如何设置它的:

代码语言:javascript
复制
// Using CreateNoWindow requires UseShellExecute to be false
myProcess.StartInfo.UseShellExecute = false;
// You can start any process, HelloWorld is a do-nothing example.
myProcess.StartInfo.FileName = "C:\\HelloWorld.exe";
myProcess.StartInfo.CreateNoWindow = true;
myProcess.Start();

在另一个示例中,它就在下面,因为UseShellExecute缺省为true

代码语言:javascript
复制
// UseShellExecute defaults to true, so use the WindowStyle
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5094003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档