想要隐藏cmd提示屏幕

本文关键字:提示 屏幕 cmd 隐藏 | 更新日期: 2023-09-27 17:52:39

我开发了一个实用程序,它将获得列表中所有服务器的时间。

System.Diagnostics.Process p;
string server_name = "";
string[] output;
p = new System.Diagnostics.Process();
p.StartInfo.FileName = "net";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StandardOutput.ReadLine().ToString()

在执行此代码时。Cmd提示屏幕即将到来。我想对用户隐藏它。我能做些什么呢?

想要隐藏cmd提示屏幕

您可以告诉进程不使用窗口或将其最小化:

// don't execute on shell
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
// don't show window
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;

使用UseShellExecute = false,您可以重定向输出:

// redirect standard output as well as errors
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;

当您这样做时,您应该使用异步读取输出缓冲区,以避免由于缓冲区过满而导致死锁:

StringBuilder outputString = new StringBuilder();
StringBuilder errorString = new StringBuilder();
p.OutputDataReceived += (sender, e) =>
            {
                if (e.Data != null)
                {
                    outputString.AppendLine("Info " + e.Data);
                }
            };
p.ErrorDataReceived += (sender, e) =>
            {
                if (e.Data != null)
                {
                    errorString.AppendLine("EEEE " + e.Data);
                }
            };

尝试使用ProcessWindowStyle枚举;

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;

隐藏窗口样式。窗口可以是可见的,也可以是隐藏的。的系统显示一个隐藏的窗口,不绘制它。如果一个窗口是隐藏,它实际上是禁用的。一个隐藏的窗口可以处理来自系统或其他窗口的消息,但它无法处理用户输入或显示输出。通常,应用程序可以在自定义窗口外观时,将新窗口隐藏,然后将窗口样式设置为Normal。使用 ProcessWindowStyle。隐藏的ProcessStartInfo。UseShellExecute 属性必须为false

试一下

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

或者检查这个也

运行没有任何窗口的子进程,

使用CreateNoWindow属性并设置UseShellExecute

ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.CreateNoWindow = true; 
info.UseShellExecute = false;
Process processChild = Process.Start(info); 

我建议你去看一下MSDN的这篇文章:如何在一个新的窗口中启动控制台应用程序,父窗口,或者没有窗口

添加系统参考

using System.Diagnostics;

然后使用此代码在隐藏的CMD窗口中运行命令。

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();