今天我们来讲一个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 日
免责声明:本站为个人博客,博客所发布的一切修改补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途。否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。访问和下载本站内容,说明您已同意上述条款。