参考 C# 通过一个控制台打开另一个控制台

被调用程序

该程序为C#控制台程序,接受两个参数,运行时输出这两个参数和当前时间日期,之后可以通过按回车键关闭程序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Console.WriteLine(args[0]);
                Console.WriteLine(args[1]);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            Console.WriteLine(DateTime.Now.ToString());
            Console.WriteLine("Press enter to close window.");
            Console.ReadLine();
        }
    }
}

运行截图如下:

使用Process调用程序

需要引用System.Diagnostics名称空间。
创建Process类对象process,将设置好的ProcessStartInfo类对象startInfo赋值给process对象的StartInfo属性后即可通过调用Start方法启动目标程序。startInfo对象可以做很多设置,其中FileName为必须属性,指定需要启动的程序的路径(可以使用相对路径和绝对路径),以及Arguments属性,用于指定被调用程序所需要的参数。注意这里的Arguments属性为字符串而非字符串数组,所有参数均写在同一个字符串内,使用空格分隔。另外还有很多属性可以设置,这里不一一研究。

using System;
using System.Collections.Generic;
using System.Diagnostics; //need to using this namespace
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ProcessStart
{
    class Program
    {
        static void Main(string[] args)
        {
            var process = new Process();
            var startInfo = new ProcessStartInfo();
            startInfo.FileName = "test"; // test is a C# console programe and its code 'Test.cs' is attached as comments
            startInfo.Arguments = "madoka homura"; // this process need 2 arguments
            process.StartInfo = startInfo;
            try
            {
                Console.WriteLine("Now start process test.exe with arguments madoka and homura.");
                process.Start();
                Console.WriteLine("Kill the process test.exe after 10 seconds.");
                for (int i = 10; i > 0; i--)
                {
                    Console.WriteLine(i);
                    Thread.Sleep(1000);
                }
                Console.WriteLine("Now kill the process test.exe.");
                process.Kill();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            Console.WriteLine();
            Console.WriteLine("By.bunnyxt 2018-8-2");
        }
    }
}

本程序调用同文件夹下的test.exe程序,传递参数madoka与homura,并于10秒后关闭该程序,效果如下。

附录:

MSDN:Process Class (System.Diagnostics)
源码:CSharp-features-lab/ProcessStart/


0 条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注