Files
SzmediTools/Szmedi.Toolkit.Revit/Assists/ProcessAssists.cs
2025-09-16 16:06:41 +08:00

129 lines
3.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.Diagnostics;
using System.IO;
namespace Szmedi.Toolkit.Revit.Assists
{
public class ProcessAssists
{
public static void ExploreFile(string filePath)
{
if (File.Exists(filePath))
{
Process proc = new();
proc.StartInfo.FileName = "explorer";
//打开资源管理器
proc.StartInfo.Arguments = @"/select," + filePath;
//选中"notepad.exe"这个程序,即记事本
proc.Start();
}
}
public static void ExploreFolder(string folder)
{
if (Directory.Exists(folder))
{
Process.Start(new ProcessStartInfo(folder) { UseShellExecute = true });
}
}
/// <summary>
/// 根据“精确进程名”结束进程
/// </summary>
/// <param name="strProcName">精确进程名</param>
public static void KillProc(string strProcName)
{
try
{
//精确进程名 用GetProcessesByName
foreach (Process p in Process.GetProcessesByName(strProcName))
{
if (!p.CloseMainWindow())
{
p.Kill();
}
}
}
catch
{
}
}
/// <summary>
/// 根据 模糊进程名 结束进程
/// </summary>
/// <param name="strProcName">模糊进程名</param>
public static void KillProcA(string strProcName)
{
try
{
//模糊进程名 枚举
//Process[] ps = Process.GetProcesses(); //进程集合
foreach (Process p in Process.GetProcesses())
{
Console.WriteLine(p.ProcessName + p.Id);
if (p.ProcessName.IndexOf(strProcName, StringComparison.Ordinal) > -1) //第一个字符匹配的话为0这与VB不同
{
if (!p.CloseMainWindow())
{
p.Kill();
}
}
}
}
catch
{
}
}
/// <summary>
/// 判断是否包含此字串的进程 模糊
/// </summary>
/// <param name="strProcName">进程字符串</param>
/// <returns>是否包含</returns>
public static bool SearchProcA(string strProcName)
{
try
{
//模糊进程名 枚举
//Process[] ps = Process.GetProcesses(); //进程集合
foreach (Process p in Process.GetProcesses())
{
Console.WriteLine(p.ProcessName + p.Id);
if (p.ProcessName.IndexOf(strProcName, StringComparison.Ordinal) > -1) //第一个字符匹配的话为0这与VB不同
{
return true;
}
}
return false;
}
catch
{
return false;
}
}
/// <summary>
/// 判断是否存在进程 精确
/// </summary>
/// <param name="strProcName">精确进程名</param>
/// <returns>是否包含</returns>
public static bool SearchProc(string strProcName)
{
try
{
//精确进程名 用GetProcessesByName
Process[] ps = Process.GetProcessesByName(strProcName);
return ps.Length > 0;
}
catch
{
return false;
}
}
}
}