今天我们来讲一个c#很基础的一个知识点进程,我们知道每个Win32程序都会被分配到一个或多个进程里面,进程之间是相互独立的,一个进程出现问题停止工作并不会影响其它的进程。那我们怎样用C#来获取当前运行的所有进程呢?我们来看看下面这段代码

Process[] ps = Process.GetProcesses();
foreach (Process p in ps)
{
     Console.WriteLine("{0},{1}", p.ProcessName, p.Id);
}

c#遍历本机运行进程

如图所示,我们得到当前运行的进程并打印出了进程名称和进程唯一ID。每个程序都有一个主进程,进程里面包含的是线程,我们现在想得到QQ这个进程里面运行了哪些线程,以及它是什么时候开始运行的,代码该怎么写呢?这个很简单,以QQ为例,我们来看看下面这段代码

Process pd = Process.GetProcessById(22976);
ProcessThreadCollection ptc = pd.Threads;
foreach (ProcessThread pt in ptc)
   {
      Console.WriteLine("{0}---{1}", pt.StartTime, pt.Id);
   }

c#获取进程内的线程
如图所示,QQ进程内包含的线程还挺多的,线程信息除了启动时间以外还包含线程id等信息。除了查看进程内的线程信息以外,c#中是可以对进程进行开关控制的,具体来看看下面两段代码

根据线程名字杀死指定线程

//根据线程名字杀死指定线程
 Process[] ps = Process.GetProcesses();
 foreach (Process p in ps)
 {

     if (p.ProcessName == "QQ")
     {
         p.Kill();
     }

 }

根据程序路径启动指定程序

//根据程序路径启动指定程序
ProcessStartInfo psi = new ProcessStartInfo("QQ.exe");
psi.FileName = @"C:\Program Files\Tencent\QQ\Bin\QQ.exe";
Process.Start(psi);
最后修改:2022 年 09 月 30 日
如果觉得我的文章对你有用,请随意赞赏