zoukankan      html  css  js  c++  java
  • 执行外部程序

            /// <summary>
            /// 执行外部程序
            /// </summary>
            /// <param name="proccessMsg">返回处理进程消息</param>
            /// <param name="processPath">设置外部程序名(包括程序路径)</param>
            /// <param name="args">设置外部程序的启动参数</param>
            /// <param name="workingDirectory">设置外部程序工作目录</param>
            /// <returns>外部程序在结束运行时的返回值</returns>
            public static int StartProcess(IList<string> proccessMsg, string processPath, string args, string workingDirectory)
            {
                int WaitForExitInMilliseconds = 10 * 60 * 1000;//等待时间

                //声明一个程序信息类
                System.Diagnostics.ProcessStartInfo Info = new System.Diagnostics.ProcessStartInfo();

                //设置外部程序名
                Info.FileName = processPath;

                //设置外部程序的启动参数(命令行参数)
                Info.Arguments = args;

                //设置外部程序工作目录
                Info.WorkingDirectory = workingDirectory;

                //声明一个程序类
                System.Diagnostics.Process Proc = new System.Diagnostics.Process();

                try
                {
                    //启动外部程序
                    Proc = System.Diagnostics.Process.Start(Info);
                }
                catch (System.ComponentModel.Win32Exception ex)
                {
                    proccessMsg.Add(string.Format("系统找不到指定的程序文件。{0} ", System.Environment.NewLine + ex));
                }
                finally
                {

                    //打印出外部程序的开始执行时间
                    proccessMsg.Add(string.Format("外部程序的开始执行时间:{0} ", Proc.StartTime));

                    //等待时间
                    Proc.WaitForExit(WaitForExitInMilliseconds);

                    //如果这个外部程序没有结束运行则对其强行终止
                    if (Proc.HasExited == false)
                    {
                        proccessMsg.Add("由主程序强行终止外部程序的运行! ");
                        Proc.Kill();
                    }
                    else
                    {
                        proccessMsg.Add("由外部程序正常退出! ");
                    }
                    proccessMsg.Add(string.Format("外部程序的结束运行时间:{0} ", Proc.ExitTime));
                    proccessMsg.Add(string.Format("外部程序在结束运行时的返回值:{0} ", Proc.ExitCode));
                }
                return Proc.ExitCode;
            }

            public static bool  Demo()
            {

        IList<string> proccessMsg = new List<string>();
                string processPath =  @"D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe";
                string args = @" E:\work\CRMProject\QZH_CRM\QZH_CRM.sln /build Debug /out complile.log";
                string workingDirectory = @"E:\Work\Crm\Web";
                int code = StartProcess(proccessMsg, processPath, args, workingDirectory);
                return code == 0;
            }


     

  • 相关阅读:
    [转]vs2010 快捷键大全
    oracle 分组排序
    jqGrid如何实现单选。
    WCF 服务调用RFC 出现异常
    c语言修饰符总结const、static、volatile、auto、extern、register
    BL和LDR——位置无关码和位置相关码
    原码,反码,补码(二)
    原码补码反码
    C语言内存分布
    ARM总线架构(S3C2440)
  • 原文地址:https://www.cnblogs.com/059212315/p/2307853.html
Copyright © 2011-2022 走看看