• 在C#中调用另一个应用程序或命令行(.exe 带参数)<zz>


    在.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",   "http://www.newhappy.cn");  
    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("继续执行代码")

  • 相关阅读:
    并发与并行
    cgi fastcgi
    阻塞和非阻塞,同步和异步
    PHP常量
    nginx入门(4):FastCGI代理
    fastjson实体转json顺序不一致问题
    vue在一个方法执行完后再执行另一个方法
    如何搭建一个vue项目(完整步骤)
    什么是Node.js?
    Android学习记录---在子线程中使用组件ui会报错
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3271829.html
Copyright © 2020-2023  润新知