1. 程式人生 > >.net及.net core如何開啟資料夾?如何開啟.exe?如何開啟.txt文字?如何開啟*.*檔案

.net及.net core如何開啟資料夾?如何開啟.exe?如何開啟.txt文字?如何開啟*.*檔案

大道至簡!

using System;
using System.Diagnostics;

namespace CommonUtils
{
    /// <summary>
    /// 程序管理
    /// </summary>
    public class ProcessUtil
    {
        /// <summary>
        /// 執行程序
        /// </summary>
        /// <param name="process">.net core環境下這裡只能寫exe .net環境可以直接寫檔案路徑,框架會查詢預設程式</param>
        /// <param name="argument">引數</param>
        public static void Run(string process, string argument = null)
        {
            try
            {
                if (string.IsNullOrEmpty(argument))
                    Process.Start(process);
                else
                    Process.Start(process, argument);
            }
            catch (Exception ex)
            {
                Console.WriteLine(process + " " + argument);
                Console.WriteLine(ex);
            }
        }

        /// <summary>
        /// 關閉程序
        /// </summary>
        public static void Kill(int pid)
        {
            try
            {
                var process = Process.GetProcessById(pid);
                if (process != null)
                    process.Kill();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Pid: " + pid);
                Console.WriteLine(ex);
            }
        }

        /// <summary>
        /// 關閉程序
        /// </summary>
        public static void Kill(string name)
        {
            try
            {
                var processes = Process.GetProcessesByName(name);
                foreach (var process in processes)
                    process.Kill();
            }
            catch (Exception ex)
            {
                Console.WriteLine("ProcessName: " + name);
                Console.WriteLine(ex);
            }
        }
    }
}

如何開啟資料夾:(public static class FloderUtil)

        /// <summary>
        /// 開啟資料夾
        /// </summary>
        public static void Open(string path)
        {
            ProcessUtil.Run(@"C:\Windows\explorer.exe", path);
        }

如何開啟exe:ProcessUtil.Run

如何開啟txt:(public static class FileUtil)

        /// <summary>
        /// 文字相關程式
        /// </summary>
        private static string[] mTextProcesses = {
            @"C:\Program Files\Notepad\notepad++.exe",
            @"D:\Program Files\Notepad\notepad++.exe",
            @"C:\Program Files\Notepad++\notepad++.exe",
            @"D:\Program Files\Notepad++\notepad++.exe",
            @"C:\Program Files (x86)\Notepad\notepad++.exe",
            @"D:\Program Files (x86)\Notepad\notepad++.exe",
            @"C:\Program Files (x86)\Notepad++\notepad++.exe",
            @"D:\Program Files (x86)\Notepad++\notepad++.exe",
            @"C:\Windows\notepad.exe",
           };

        /// <summary>
        /// 開啟文字
        /// </summary>
        public static void OpenText(string path)
        {
            foreach (var process in mTextProcesses)
            {
                if (Exists(process))
                {
                    ProcessUtil.Run(process, path);
                    break;
                }
            }
        }

如何開啟*.*檔案:(public static class FileUtil)

        /// <summary>
        /// 開啟檔案,相對路徑經常會出問題,這個最好傳入完整路徑
        /// 這裡為什麼不把process寫前面,與ProcessUtil.Open引數統一呢?
        /// 為了相容.net,.net開啟檔案會查詢預設程式,不用指定程式
        /// </summary>
        public static void Open(string path, string process = null)
        {
            //如果沒有指定程式,路徑即為程式
            if (process == null)
                ProcessUtil.Run(path);
            //如果指定了程式,路徑為引數
            else
                ProcessUtil.Run(process, path);
        }

測試程式碼:

    class Program
    {
        static void Main(string[] args)
        {
            //遍歷文字程式開啟文字
            FileUtil.OpenText(@"D:\Test\Test1.txt");

            //預設文字程式開啟文字
            //FileUtil.Open(@"D:\Test\Test2.txt");//!!!這種寫法僅支援.net不支援core

            //指定記事本開啟文字
            FileUtil.Open(@"D:\Test\Test3.txt", @"C:\Windows\notepad.exe");
            //ProcessUtil.Run(@"C:\Windows\notepad.exe",@"D:\Test\Test3.txt");同上

            //開個寫字板測試用
            FileUtil.Open(@"C:\Windows\write.exe");

            //開啟資料夾
            FloderUtil.Open(@"D:\Test");

            //ProcessUtil.Kill("notepad++");//關閉測試

            Console.WriteLine("Press enter to exit...");
            Console.ReadLine();
        }
    }

如果還沒看懂,或者不會搭環境,原始碼在此:

https://gitee.com/atalent/CommonUtils-dot-net-core