从我的应用程序内部运行 cmd 命令

本文关键字:cmd 命令 运行 内部 我的 应用程序 | 更新日期: 2023-09-27 18:33:40

我想用C#形式做一个应用程序。表单具有多个用于显示信息的标签和一个用于单击并在该标签上显示该信息的按钮。所有标签都将显示可以使用cmd找到的信息。 cmd在程序执行时不会显示。

例如:

如果我需要主板信息。可以使用cmd命令"wmic踢脚板获取产品,制造商"(不带引号)来完成。我想通过单击按钮在我的 C# 表单标签上显示相同的信息。这需要隐藏cmd窗口。

从我的应用程序内部运行 cmd 命令

可以使用 ProcessStartInfo 和 Process 类来运行此应用程序,并将标准输出重定向到您自己的方法。

设置重定向标准输出将使进程引发输出数据接收事件,您可以轻松处理。

附言注意使用参数来提供参数。

var psi = new ProcessStartInfo(@"wmic");
psi.Arguments = @"baseboard get product,manufacturer";
psi.WindowStyle = ProcessWindowStyle.Hidden;
psi.UseShellExecute = false;
psi.RedirectStandardOutput = true;
string val = String.Empty;
var p = Process.Start(psi);
p.BeginOutputReadLine();
p.OutputDataReceived += delegate(object sender, DataReceivedEventArgs eventArgs)
{
    val += eventArgs.Data + "'r'n";
};
p.WaitForExit();
MessageBox.Show(val); // Start parsing it here

针对 http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo%28v=vs.110%29.aspx 和 http://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110) 引用下面的代码.aspx

System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(yourCmd, yourCmdArguments);
psi.RedirectStandardOutput = false;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
psi.UseShellExecute = true;
System.Diagnostics.Process externalProcess;
externalProcess = System.Diagnostics.Process.Start(psi);
externalProcess.WaitForExit();