大道至简!
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();
}
}
如果还没看懂,或者不会搭环境,源码在此: