日期:2014-05-17  浏览次数:20782 次

怎样用 C# 启动其他程序写的 exe 文件
现在文件夹的结构是:Input(文件夹),Output(文件夹),Save_DCI(文件夹),Save_Show(文件夹),RNHS.exe,同级关系。
其中 Input 里面是一些输入参数,类型为 .dat。
     Output、Save_DCI、Save_Show 为输出结果。

怎么用代码启动这个 RNHS.exe,而且要知道这个 RNHS.exe 是否已经运行完。

------解决方案--------------------
引用:
这个 exe 需要用到输入参数,只用Process.Start()是启动不了的,以上的都没有看清楚。我自己已经解决了。谢谢

几乎所有的方法最后都转化为对 CressProcess 的调用。这个API强大无比,包括控制子进程、设置权限、传递参数等等无所不能。
------解决方案--------------------
我只想提醒看了上面内容的人们别被某些东西误导了!

Process.Start不是仅仅是启动一个exe,可以传入参数,可以指定登陆账户名和密码,甚至是域,它返回一个Process类,利用这个类你还可以得到启动进程的信息(Pid,主窗口句柄,退出代码),同时还可以控制已经启动的进程(强行结束,等待结束,甚至是改写)

另外Process.Start还可以传入ProcessStartInfo对象,使用这个对象还可以改写进程输入输出流。
当然也没必要按照7楼去研究API CreateProcess函数,一般情况下托管Process类足以应对大多数功能!

(多嘴这么多,主要是我认为这种提问性质的技术论坛最大的意义不是解决提问者的问题,而是要将问题所代表的技术问题更清晰得反映给日后读问题的人,这才是社区!)
------解决方案--------------------
如下代码,运行cmd,有指定参数,但cmd关闭后,程序会提示进程结束,并输出结束时间

        static void Main(string[] args)
        {
            Console.WriteLine("开始运行");
            Process pro = Process.Start("cmd.exe", "/c ping www.google.com");
            pro.WaitForExit();
            Console.WriteLine("结束,结束时间{0}", pro.ExitTime);

        }

------解决方案--------------------
System.Diagnostics.Process process = new System.Diagnostics.Process();
            process.StartInfo.FileName = @"D:\Program Files\Tencent\QQ\Bin\QQ.exe"; //"输入完整的路径"
            process.StartInfo.Arguments = "QQ.exe"; //启动参数 
            process.Start();
希望可以帮到你!