进程

1.一个应用程序就是一个进程,而一个进程又是由多个线程组成的。
2.进程帮助我们在内存中分配应用程序执行所需要的空间。
3.我们可以通过进程来直接操作应用程序。

代码操作

<mark>获取当前所有进程名</mark>

			 //存储着我们当前正在运行的进程
            Process[] process = Process.GetProcesses();
            foreach (var item in process)
            {
                //item.Kill();//杀死进程
                Console.WriteLine(item.ProcessName); ;
            }
            //打开指定应用程序
            Process.Start("notepad");//打开记事本
            Process.Start("mspaint");//打开画图工具
            Process.Start("iexplore", "http:/www.baidu.com");
            Process.Start("calc");//打开计算器

<mark>使用进程打开文件</mark>

			//使用进程打开指定文件
            //使用进程来打开文件.封装我们要打开的文件,但是并去打开这个文件
            ProcessStartInfo psi = new ProcessStartInfo(@"");//“”内为文件路径
            //创建进程对象
            Process pro = new Process();
            //告诉进程要打开的文件信息
            pro.StartInfo = psi;
            //调用方法打开
            pro.Start();
            Console.ReadKey();

<mark>demo</mark>

class Program
{
	static void Main(string[] args)
	{
			Console.WriteLine("请输入要打开的文件所在的路径");
            string filePath = Console.ReadLine();
            Console.WriteLine("请输入要打开的文件的名字");
            string fileName = Console.ReadLine();
            //通过简单工厂设计模式返回父类
            BaseFile bf = GetFile(filePath, fileName);
            if (bf!=null)
            {
                bf.OpenFile();
            }
            Console.ReadKey();
            //获取文件类型
        static BaseFile GetFile(string filePath, string fileName)
        {
            BaseFile bf = null;
            string strExtension = System.IO.Path.GetExtension(fileName);
            switch (strExtension)
            {
                case ".txt":
                    bf = new TxtFile(filePath, fileName);
                    break;
                case ".avi":
                    bf = new AviFile(filePath, fileName);
                    break;
                case ".mp4":
                    bf = new MP4File(filePath, fileName);
                    break;
            }
            return bf;
        }
	}
}
//文件的父类,
class BaseFile
    {
        //字段(纯数据),属性(保护字段),构造函数(初始化对象-给对象的每个属性赋值),(函数)方法(描述对象的行为),索引器()
        private string _filePath;//字段封装 Ctrl+R+E

        public string FilePath { get => _filePath; set => _filePath = value; }
        //自动属性 prop+两下tab
        public string FileName { get; set; }
        public BaseFile()
        {
        
        }
        public BaseFile(string filePath, string fileName)
        {
            this.FilePath = filePath;
            this.FileName = fileName;
        }
        //设计一个方法,用来打开指定的文件
        public void OpenFile()
        {
            ProcessStartInfo psi = new ProcessStartInfo(this.FilePath + "\\" + this.FileName);
            Process pro = new Process();
            pro.StartInfo = psi;
            pro.Start();

        }
    }
    class TxtFile : BaseFile
    {
        //因为子类会默认调用父类无参的构造函数
        public TxtFile(string filePath, string fileName)
            : base(filePath, fileName)
        { }

    }
    class MP4File : BaseFile:   
        {
        public MP4File(string filePath, string fileName)
            : base(filePath, fileName)
        {

        }
    }
    class AviFile : BaseFile
    {
        public AviFile(string filePath, string fileName)
            : base(filePath, fileName)
        {

        }
    }

<mark>效果图</mark>




如有错误,欢迎指正!!!