newhappy的专栏

高级系统分析师,专注于对SOA,Ajax以及J2EE架构的研究,欢迎大家与我交流.Email:pleasechess@126.com

用户操作
[即时聊天] [发私信] [加为好友]
newhappyID:newhappy2008
490422次访问,排名93好友62人,关注者70
吉林大学软件工程硕士;一汽启明CPDM项目组软件工程师;
newhappy2008的文章
原创 187 篇
翻译 24 篇
转载 99 篇
评论 295 篇
newhappy的公告
非常感谢CSDN提供了这么好的一个平台,过去的一年为生活而忙忙碌碌,博客更新的不多,在新的一年里,我会勤快一点,多学一些技术,多交一些技术上的朋友.
最近评论
bingg:呵呵,任何事情都是发展的,变化的,楼主喜欢给事物下定义是不对的.鄙视一下
bingg:呵呵,任何事情都是发展的,变化的,楼主喜欢给事物下定义是不对的.鄙视一下
bjthemost:没什么没有人关心 Berkeley DB?
sz_haitao:上面这么多人重复发帖,看来本blog系统发完回复没有及时显示的bug是普遍存在的啊
VistaKobe:看完了,但不怎么样。数据库是很贵的!
文章分类
收藏
    相册
    友情连接
    114社区
    SOA-中间件
    张孝祥(RSS)
    杨洪波(RSS)
    沈东良
    许式伟(RSS)
    谭振林(RSS)
    银狐999(RSS)
    阿蒙专栏(RSS)
    存档
    订阅我的博客
    XML聚合  FeedSky

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

    新一篇: JDK和jre的区别 | 旧一篇: Log4j配置文件以及配置方法

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

    发表于 @ 2008年06月07日 18:06:00|评论(loading...)|收藏

    新一篇: JDK和jre的区别 | 旧一篇: Log4j配置文件以及配置方法

    评论

    #qikii 发表于2008-08-05 18:04:48  IP: 218.108.223.*
    这种程序在监控的时候使用,一般都不用的
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © newhappy