.net及.net core如何開啟資料夾?如何開啟執行.exe?如何開啟.txt文字?如何開啟*.*檔案
阿新 • • 發佈:2019-01-09
大道至簡!
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();
}
}
如果還沒看懂,或者不會搭環境,原始碼在此: