/// <summary>
/// Process extensions
/// </summary>
public static class ProcessExtensions
{
#region Functions
#region KillProcessAsync
/// <summary>
/// Kills a process
/// </summary>
/// <param name="Process">Process that should be killed</param>
/// <param name="TimeToKill">Amount of time (in ms) until the process is killed.</param>
public static void KillProcessAsync(this Process Process, int TimeToKill = 0)
{
if (Process == null)
throw new ArgumentNullException("Process");
ThreadPool.QueueUserWorkItem(delegate { KillProcessAsyncHelper(Process, TimeToKill); });
}
/// <summary>
/// Kills a list of processes
/// </summary>
/// <param name="Processes">Processes that should be killed</param>
/// <param name="TimeToKill">Amount of time (in ms) until the processes are killed.</param>
public static void KillProcessAsync(this IEnumerable<Process> Processes, int TimeToKill = 0)
{
if (Processes == null)
throw new ArgumentNullException("Processes");
Processes.ForEach(x => ThreadPool.QueueUserWorkItem(delegate { KillProcessAsyncHelper(x, TimeToKill); }));
}
#endregion
#region GetInformation
/// <summary>
/// Gets information about all processes and returns it in an HTML formatted string
/// </summary>
/// <param name="Process">Process to get information about</param>
/// <param name="HTMLFormat">Should this be HTML formatted?</param>
/// <returns>An HTML formatted string</returns>
public static string GetInformation(this Process Process, bool HTMLFormat = true)
{
StringBuilder Builder = new StringBuilder();
return Builder.Append(HTMLFormat ? "<strong>" : "")
.Append(Process.ProcessName)
.Append(" Information")
.Append(HTMLFormat ? "</strong><br />" : "\n")
.Append(Process.DumpProperties(HTMLFormat))
.Append(HTMLFormat ? "<br />" : "\n")
.ToString();
}
/// <summary>
/// Gets information about all processes and returns it in an HTML formatted string
/// </summary>
/// <param name="Processes">Processes to get information about</param>
/// <param name="HTMLFormat">Should this be HTML formatted?</param>
/// <returns>An HTML formatted string</returns>
public static string GetInformation(this IEnumerable<Process> Processes, bool HTMLFormat = true)
{
StringBuilder Builder = new StringBuilder();
Processes.ForEach(x => Builder.Append(x.GetInformation(HTMLFormat)));
return Builder.ToString();
}
/// <summary>
/// Get information of the process name
/// </summary>
/// <param name="Process">Process to get information about</param>
/// <returns></returns>
public static string GetInformation(this Process Process)
{
return Process.ProcessName;
}
/// <summary>
/// Gets information about all processes and returns it in string
/// </summary>
/// <param name="Processes">Processes to get information about</param>
/// <returns>string</returns>
public static string GetInformation(this IEnumerable<Process> Processes)
{
StringBuilder Builder = new StringBuilder();
Processes.ForEach(x => Builder.Append(x.GetInformation()));
return Builder.ToString();
}
#endregion
#endregion
#region Private Static Functions
/// <summary>
/// Kills a process asyncronously
/// </summary>
/// <param name="ProcessName">Name of the process to kill</param>
/// <param name="TimeToKill">Amount of time until the process is killed</param>
private static void KillProcessAsyncHelper(Process Process, int TimeToKill)
{
if (TimeToKill > 0)
Thread.Sleep(TimeToKill);
Process.Kill();
}
#endregion
}
分享到:
相关推荐
在C#编程中,`System.Diagnostics.Process` 类是用于与外部进程交互的重要工具。通过这个类,我们可以启动、控制和管理应用程序,甚至可以执行DOS命令。以下将详细阐述如何利用`Process`类来调用外部程序并执行DOS...
在.NET框架中,`System.Diagnostics.Process`类是一个强大的工具,用于与系统中的进程进行交互。这个类提供了启动、控制和监视本地或远程计算机上的进程的能力。让我们深入探讨`Process`类的各个方面及其常见用途。 ...
C#中的`System.Diagnostics.Process`类是用于控制和监控外部进程的重要工具。它允许我们启动、停止进程,以及与它们进行通信。在“C# process 打开指定目录”的场景中,我们需要用到的是`Process.Start`方法,该方法...
C#扩展方法是C#语言中的一个独特特性,它允许我们向现有的类添加新方法,而无需修改原类的源代码。这在很多情况下非常有用,尤其是当我们想要增强已有的.NET框架类的功能时,比如字符串、集合或者DateTime等。下面...
在C#中,我们可以使用System.Diagnostics命名空间下的Process类来操作进程,包括获取进程信息、管理进程的生命周期等。 1. **获取进程列表**:要遍历所有正在运行的进程,可以使用`Process.GetProcesses()`方法。这...
在IT领域,尤其是在桌面应用程序开发中,控制扩展屏的能力是一项重要的技术。本篇文章将深入探讨如何使用C#语言来实现这一功能,特别是涉及到屏幕旋转,以便优化用户在扩展屏上的体验。 C#是一种广泛用于Windows...
总之,`System.Diagnostics.Process`类是C#中进行进程控制的关键工具,它使得开发者能够轻松地在应用程序中调用DOS命令或其他系统级操作,从而扩展应用程序的功能。通过理解和熟练使用`Process`类,你可以实现更多与...
在C#编程中,`System.Diagnostics.Process`类是用于管理和...通过理解并熟练运用`Process`类的方法和属性,可以极大地扩展C#应用程序的功能。在实际开发中,务必注意错误处理和资源管理,以确保程序的稳定性和可靠性。
在C#编程中,进程(Process)类是用于与操作系统中的执行程序进行交互的主要工具。这个类位于System.Diagnostics命名空间中,提供了启动、管理和控制进程的能力。本文将深入探讨如何利用C#的Process类来调用系统应用...
在C#编程中,`Process`类是System.Diagnostics命名空间中的一个重要组成部分,它为我们提供了管理和控制操作系统进程的能力。本文将详细解析`Process`类在任务管理器中的应用,包括新建任务、结束任务、资源管理、...
这里使用C#编程的方法改变文件扩展名的文件,必须使用Path类。 Path类用来解析文件系统路径的各个部分。静态方法Path.ChangeExtension方法可以用来改变文件扩展名。可用Path.GetExtension方法可用来取得的文件扩展名...
在.NET框架中,C#语言提供了丰富的类库来支持系统级别的操作,其中之一就是`System.Diagnostics.Process`类。这个类主要用于管理和控制操作系统中的进程,包括获取进程列表、监视进程资源使用情况以及与进程进行交互...
AIR NativeExtension 扩展C#/C++类
C#调用process执行DOS命令,间接调用其他软件或进程
C# 调用UVC摄像头扩展模块dll
在C#编程中,`System.Diagnostics.Process.Start`方法是一个非常常用的功能,用于启动一个外部进程,比如打开一个网页。这个方法允许开发者通过编程的方式控制操作系统执行各种任务,比如浏览网页、打开文档、运行...
在C#中,通过Process类来进行进程操作。 Process类在System.Diagnostics包中。 示例一 代码如下:using System.Diagnostics; Process p = Process.Start(“notepad.exe”); p.WaitForExit();//关键,等待外部程序...
1、利用SoapExtension,SoapExtensionAttribute,实现Soap自定义Attribute(标签)扩展类。 2、利用SoapHeader应用Soap扩展。 3、在写WebService时只需加认证标签,客户端调用时传入SoapHeader,即可完成认证。 4、...
总之,《设计模式:基于C#的工程化实现及扩展》是一本对于C#开发者来说非常有价值的参考资料,它不仅讲解了设计模式的理论,还提供了丰富的实践案例,帮助读者掌握如何在实际项目中应用这些模式,提升软件开发的专业...
开发日常使用帮助类扩展方法,仅供学习使用。。直接引用扩展使用