C#调用Exe

 

在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法。在C#中,通过Process类来进行进程操作。 Process类在System.Diagnostics包中。

示例一
using System.Diagnostics; 
Process p = Process.Start("notepad.exe");
p.WaitForExit();//关键,等待外部程序退出后才能往下执行


通过上述代码可以调用记事本程序,注意如果不是调用系统程序,则需要输入全路径。

示例二

当需要调用cmd程序时,使用上述调用方法会弹出令人讨厌的黑窗。如果要消除,则需要进行更详细的设置。

Process类的StartInfo属性包含了一些进程启动信息,其中比较重要的几个

FileName                可执行程序文件名

Arguments              程序参数,已字符串形式输入
CreateNoWindow     是否不需要创建窗口
UseShellExecute      是否需要系统shell调用程序

通过上述几个参数可以让讨厌的黑屏消失

System.Diagnostics.Process exep = new System.Diagnostics.Process(); 
exep.StartInfo.FileName = binStr;
exep.StartInfo.Arguments = cmdStr; 
exep.StartInfo.CreateNoWindow = true; 
exep.StartInfo.UseShellExecute = false; 
exep.Start(); 
exep.WaitForExit();//关键,等待外部程序退出后才能往下执行

Dim p As New Process()
p.StartInfo.FileName = "arj.exe"
p.StartInfo.Arguments = "a a:test c:\test.mdb -va -y"
p.Start() 


或者

System.Diagnostics.Process exep = new System.Diagnostics.Process(); 
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); 
startInfo.FileName = binStr;
startInfo.WorkingDirectory = binStr.Substring(0,binStr.LastIndexOf("\\"));  //设定程序的工作目录路径
startInfo.Arguments = cmdStr; 
startInfo.CreateNoWindow = true; 
startInfo.UseShellExecute = false; 
exep.Start(startInfo); 
exep.WaitForExit();//关键,等待外部程序退出后才能往下执行



 
Process iProcess = new Process();
                    iProcess.StartInfo.FileName = "cmd.exe";
                    iProcess.StartInfo.UseShellExecute = false;
              
                    iProcess.StartInfo.RedirectStandardInput = true;
                    iProcess.StartInfo.RedirectStandardOutput = true;
                    iProcess.StartInfo.RedirectStandardError = true;
                    iProcess.StartInfo.CreateNoWindow = true;

                    iProcess.Start();
                    iProcess.StandardInput.WriteLine("ping -n 1 " + ip);
//这里是一个ping命令带ip地址参数的,你可以改成telnet命令还有添加参数
                    iProcess.StandardInput.WriteLine("exit");

                    result = iProcess.StandardOutput.ReadToEnd();
//这里是控制台返回的结果

UseShellExecute=false 不用系统默认的程序打开,所以在你没有指定用什么程序打开时,线程就一直等待。
而UserShellExecute默认值是true,所以你注释掉时,它会用默认的程序打开你需要打开的文件,便能继续执行下去。

http://www.cnblogs.com/glorey/archive/2011/03/08/1977725.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值