注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

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

2009-03-21 10:15:30|  分类: 编程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

在.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("继续执行代码")

  评论这张
 
阅读(673)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017