在c#中调用另一个应用程序或命令行(.exe 带参数)

在.net中使用system.diaglostics.Process可以用来调用另一个命令行或程序。
using    System.Diagnostics;   
   如果是dos   
   Process.Start("cmd.exe");   
   如果是其他文件   
   Process.Start("绝对路径+文件名.exe");   
   ------------------------------------   
   如何在c#中调用外部dos程序?   
   使用Process对象:       
   System.Diagnostics.Process      p=new      System.Diagnostics.Process();       
   p.StartInfo.FileName="arj.exe"      ;//需要启动的程序名       
   p.StartInfo.Arguments="-x      sourceFile.Arj      c:/temp";//启动参数       
   p.Start();//启动       
   if(p.HasExisted)//判断是否运行结束       
     p.kill();   



-------------------------------------------------------------------------------------------------------------------------------------
///    <summary>   
   ///    启动其他的应用程序   
   ///    </summary>   
   ///    <param    name="file">应用程序名称</param>   
   ///    <param    name="workdirectory">应用程序工作目录</param>   
   ///    <param    name="args">命令行参数</param>   
   ///    <param    name="style">窗口风格</param>   
   public    static    bool    StartProcess(string    file,string    workdirectory,string    args,ProcessWindowStyle    style)   
   {   
   try   
   {   
   Process    myprocess    =    new    Process();   
   ProcessStartInfo    startInfo    =    new    ProcessStartInfo(file,args);   
   startInfo.WindowStyle    =    style;   
   startInfo.WorkingDirectory    =    workdirectory;   
   myprocess.StartInfo    =    startInfo;   
   myprocess.StartInfo.UseShellExecute    =    false;   
   myprocess.Start();   
   return    true;   
   }   
   catch(Exception    e0)   
   {   
   MessageBox.Show("启动应用程序时出错!原因:"    +    e0.Message);   
   }   
   return    false;   
   }   
    
    
    
   string    parms    =    ""    +    GlobalObject.GetInstance().UserID    +    "    "    +    GlobalObject.GetInstance().UserPassword;   
   if    (PublicMethods.StartProcess(Application.StartupPath    +    @"/uptool/uptool.exe",Application.StartupPath    +    "//UpTool",parms,ProcessWindowStyle.Normal))   
   {   
   Environment.Exit(0);   
   }   
----------------------------------------------------------------------------------------------------------------------
Process.Start("IExplore.exe",    " [url]http://www.newhappy.cn[/url]");  
System.Diagnostics.ProcessStartInfo    startInfo    =    new    System.Diagnostics.ProcessStartInfo(    );   
   startInfo.FileName    =    "执行EXE的文件名";   
   startInfo.Arguments    =    "参数数组";   
   System.Diagnostics.Process.Start(    startInfo    );
----------------------------------------------------------------------------------------------------------------------------
1.有好多时,我们需要调用外部的EXE程序,并且要等它运行完毕,我们才可以继续下面的动作,那我们怎样去实现了,请看以下代码.
         '怎样等待外部程序运行完毕.
         '从系统资料夹读入文件
         Dim sysFolder As String = _
                     Environment.GetFoldERPath(Environment.SpecialFolder.System)
         '创建一个新的进程结构
         Dim pInfo As New ProcessStartInfo()
         '设置其成员FileName为系统资料的Eula.txt
         pInfo.FileName = sysFolder & "/eula.txt"
         '运行该文件
         Dim p As Process = Process.Start(pInfo)
         '等待程序装载完成
         p.WaitForInputIdle()
         '等待进行程退出
         p.WaitForExit()
         '继续执行下面的代码
         MessageBox.Show("继续执行代码")


2.我们想在5秒钟后,强行关闭它.而不是需要我手工关闭.
     '设置退出时间
     Dim timeOut As Integer = 5000
     Dim sysFolder As String = _
          Environment.GetFolderPath(Environment.SpecialFolder.System)
     Dim pInfo As New ProcessStartInfo()
     pInfo.FileName = sysFolder & "/eula.txt"
     Dim p As Process = Process.Start(pInfo)
     p.WaitForInputIdle()
     p.WaitForExit(timeOut)
     '检查是否在超时前已关闭了.
     If p.HasExited = False Then
         '进行程还在运行
         '看进程有没有回应
         If p.Responding Then
             p.CloseMainWindow() '关闭窗口
         Else
             p.Kill()   '强行中断
         End If
     End If
     MessageBox.Show("继续执行代码")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值