C#操作windows系统进程的方法
在C#中,我们可以使用Process
类来控制和操作Windows系统的进程。
如何启动一个进程?
我们可以使用Process.Start()
方法来启动一个新的进程。该方法有多个重载形式,其中最常用的形式是传递进程的可执行文件的完整路径或者文件名,可以带上其它参数,可见以下示例:
Process.Start("notepad.exe"); // 启动notepad
Process.Start("C:\\Windows\\System32\\calc.exe"); // 启动计算器
Process.Start("C:\\Program Files\\MyApp\\MyApp.exe", "--debug"); // 启动指定路径下的应用程序,带上参数
如何使用进程的信息?
我们可以使用Process
实例的许多属性来获取进程的信息,例如:
Id
- 进程PIDName
- 进程名称(不带文件扩展名)MainWindowTitle
- 进程主窗口的标题StartTime
- 进程创建时间TotalProcessorTime
- 进程的CPU使用时间Threads
- 进程的线程列表
可见以下示例:
Process notepad = Process.Start("notepad.exe");
Console.WriteLine($"进程ID:{notepad.Id}");
Console.WriteLine($"进程名称:{notepad.ProcessName}");
Console.WriteLine($"主窗口标题:{notepad.MainWindowTitle}");
Console.WriteLine($"开始时间:{notepad.StartTime}");
Console.WriteLine($"CPU使用时间:{notepad.TotalProcessorTime}");
Console.WriteLine($"线程数量:{notepad.Threads.Count}");
如何关闭或终止进程?
我们可以使用Process.Kill()
方法来终止进程,也可以使用Process.CloseMainWindow()
方法来关闭进程的主窗口(前提是该进程的主窗口可以响应WM_CLOSE
消息),例如:
Process notepad = Process.Start("notepad.exe");
Thread.Sleep(1000); // 等待1秒,确保notepad已经启动
notepad.CloseMainWindow(); // 关闭notepad的主窗口
notepad.WaitForExit(); // 等待notepad进程退出
notepad.Dispose(); // 释放notepad占用的资源
示例
以下是一个完整的控制Windows进程的示例程序,首先启动Notepad进程,然后等待用户通过控制台输入关闭指令,并在接收到关闭指令后关闭Notepad进程:
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
Process notepad = Process.Start("notepad.exe");
Console.WriteLine($"启动进程:{notepad.Id} - {notepad.ProcessName}");
Console.WriteLine("输入x关闭进程");
while(Console.ReadLine() != "x") {}
notepad.CloseMainWindow();
notepad.WaitForExit();
notepad.Dispose();
Console.WriteLine($"进程已关闭");
}
}
另一个示例程序是检测系统中所有运行的Web服务器进程,统计它们的CPU使用时间和内存使用情况,并输出到控制台:
using System;
using System.Diagnostics;
using System.Linq;
class Program
{
static void Main()
{
foreach(Process p in Process.GetProcesses())
{
if(p.ProcessName == "w3wp" || p.ProcessName == "iisexpress")
{
Console.WriteLine($"{p.ProcessName} - CPU时间:{p.TotalProcessorTime},内存使用:{p.WorkingSet64/1024}KB");
}
}
}
}
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#操作windows系统进程的方法 - Python技术站