在C#窗口中运行系统命令
来源:互联网 发布:淘宝百雀羚旗舰店真假 编辑:程序博客网 时间:2024/04/25 03:01
有些时候运行系统命令可以很方便的达到一些特定目的。比如说,可以用c:/>powercfg /H on来启用系统休眠。c:/>netsh firewall set opmode DISABLE可以用来禁用系统防火墙。
首先,在C#中运行一个外部程序是非常简单的: System.Diagnostics.Process.Start("cmd.exe", "/K dir");
该命令会弹出一个命令行窗口并 列出当前目录中的文件。把/K改成/C可以自动关闭弹出的命令行窗口,不过黑窗口还是一闪而过,而且我们看不到运行结果。
对于我们漂亮的WinForm窗口,跳出黑黑的DOS窗口总是非常丑陋和让人不爽的。如何既能运行系统命令,又能拿到结果,而且还不显示丑陋的命令行窗口呢?解决方法就是Process类中StartInfo成员。StartInfo成员可以指定弹出窗口是最小化,最大化,或是隐藏窗口。更妙的是,我们可以通过设定StartInfo.CreateNoWindow=false,让该进程没有任何关联窗口!同时,我们接管该进程的标准输入和输出。设定StartInfo.RedirectStandardOutput为真,然后从Process.StandartOutput读取运行结果。
以下是一个逐步的示范,可以显示你机器当前的IP配置:
一、用VS2005或者C# Express建立一个Winform程序。
二、添加一个按钮和一个RichTextBox。
三、在设计界面双击添加的按钮,自动生成button1_Click事件响应代码。
四、把button1_Click代码换成以下所附代码。
五、编译并运行,大致运行结果可见所附的图片。
...{
System.Diagnostics.Process proc = new Process();
proc.StartInfo.FileName = "netsh.exe";
proc.StartInfo.Arguments = "interface ipv4 show config";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
proc.Start();
using (StreamReader reader = proc.StandardOutput)
...{
string line = reader.ReadLine();
while (line != null)
...{
richTextBox1.AppendText(line + " ");
Application.DoEvents();
line = reader.ReadLine();
}
}
proc.WaitForExit();
this.Cursor = Cursors.Default;
}
讨论
在C#中重定向标准输入输出是很容易的。Process.StandartInput和Process.StandartOutput支持StreamWriter和StreamReader,读输出跟读文件一样方便。用C++来做其实还麻烦一些。同样的道理,我们需要准备一个STARTUPINFO结构并设置它的hStdOutput成员。该句柄可以是一个文件句柄或者是命名管道的句柄,分别用来重定向输出到文件,或者到命名管道另一端的程序。论坛里问过如何做Telnet,其实在服务端运行类似程序并把结果传给远程终端,就是Telnet的初步实现。
- 在C#窗口中运行系统命令
- 在64位系统中运行32位命令提示符
- C# WinForm在Win7系统中以管理员权限运行
- java 在dos窗口下运行命令
- C#在窗口中绘图
- 当在程序中运行DOS命令时如何隐藏DOS窗口并判断其结束
- 在C#中运行JavaScript
- C#中窗口在屏幕中居中
- 【Unix/Linux】【命令】CTRL + C —— 终止当前在终端窗口中运行的命令或脚本
- 在win7系统中,利用命令窗口进入某个文件夹的方法
- Windows系统下如何在cmd命令窗口中切换不同版本Python
- 在windows系统的cmd窗口中命令查询指定端口占用的进程并关闭
- 在“运行”中的系统命令!(转)
- 在C#中使用热键隐含窗口
- 在C#中使用热键隐含窗口
- c# 隐藏窗口在ALT+TAB中
- 解决android的adb在命令窗口运行无效问题
- 在Windows的命令窗口运行.py程序
- JS HTML 顺序加载 问题
- 关于调用约定(cdecl、fastcall、stcall、thiscall) 的一点知识
- 嵌入式操作系统介绍分析
- 你的网站可以赢利吗?
- asp.net未能加载文件或程序集"WebChart Version1.1.1.4 Culture=neutral"或它的某个依赖项,未能授于最小权项请求
- 在C#窗口中运行系统命令
- 优化网站设计的五种方法
- 使用DataSet和DataAdapter
- Del.icio.us的成功经验
- 以太网基础
- java的反编译工具大全
- 在Word中,如何删除页眉页脚
- 编程语言的趋势及其他
- TCP/IP基础