用快照枚举当前系统中所有进程

如何用快照枚举当前系统中所有进程,近来问这个问题的朋友比较多,所以干脆贴上来算了。呵呵。:D

在窗体上添加一个ListView,设置其ViewStyle为vsReport,在ListView上添加三个Column,再添加一个Button。

#include <tlhelp32.h>
#include "stdio.h"
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
   // Find each process and display it.
   HANDLE snapshot ;
   PROCESSENTRY32 processinfo ;
   processinfo.dwSize = sizeof (processinfo) ;
   snapshot = CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0) ;
   if (snapshot == NULL)
     return ;
   bool status = Process32First (snapshot, &processinfo) ;
   while (status)
   {
     TListItem *li = ListView1->Items->Add () ;
     String buffer ;
     int length ;
     buffer.SetLength (512) ;
     length = sprintf (buffer.c_str (), "%08X", processinfo.th32ProcessID) ;
     buffer.SetLength (length) ;
     li->Caption = buffer;
     buffer.SetLength (512) ;
     length = sprintf (buffer.c_str (), "%08X", processinfo.th32ParentProcessID) ;
     buffer.SetLength (length) ;
     li->SubItems->Add (buffer) ;
     li->SubItems->Add (processinfo.szExeFile) ;
     status = Process32Next (snapshot, &processinfo) ;
   }
}

时间: 2024-11-03 06:56:35

用快照枚举当前系统中所有进程的相关文章

Linux系统中的进程管理简介

在Linux系统里,当前正在运行的程序实例称为进程.比如,当你启动Apache的时候,系统会为它分配一个进程ID.然后就可以用这个ID监视和控制这个程序. 进程监视和控制是任何Linux系统管理员的核心任务.一个管理员可以终止("kill").重启一个进程,甚至可以为它指定一个不同的优先级.标准的Linux命令"ps"和"top"通常用于查看当前的进程列表.下面我来说明如何用这些命令和其它命令来管理Linux系统中的进程. 用ps监视进程 一个监

Android系统中的进程管理:进程的创建

对于操作系统来说,进程管理是其最重要的职责之一. 考虑到这部分的内容较多,因此会拆分成几篇文章来讲解. 本文是进程管理系统文章的第一篇,会讲解Android系统中的进程创建. 本文适合Android平台的应用程序开发者,也适合对于Android系统内部实现感兴趣的读者. 概述 Android系统以Linux内核为基础,所以对于进程的管理自然离不开Linux本身提供的机制.例如: 通过fork来创建进行 通过信号量来管理进程 通过proc文件系统来查询和调整进程状态等 对于Android来说,进程

Linux 系统中僵尸进程

Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动.僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸. 僵尸进程如何产生的? 如果一个进程在其终止的时候,自己就回收所有分配给它的资源,系统就不会产生所谓的僵尸进程了.那么我们说一个进程终止之后,还保留哪些信息?为什么终止之后还需要保留这些信息呢? 一个进程终止的方法很多,进程终止后有些信息对于父进程和内核还是很有用的,例如进程的ID号.进程的退出状态.进程

Windows系统中一个进程可以允许最大的线程数

默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小. 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程. 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程. 即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制. 比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用

详解Linux系统中的进程初始化配置文件inittab

  /etc/inittab文件描述了哪些进程开始启动并正常运行.inittab为linux初始化文件系统时init初始化程序用到的配置文件.这个文件负责设置init初始化程序初始化脚本在哪里;每个运行级初始化时运行的命令; 开机.关机.重启对应的命令;各运行级登陆时所运行的命令. inittab文件中的条目的格式如下: label:runlevels:action:process 下面分别介绍各个字段 1.label label 是一个独特的序列,确定了一个条目1 - 4字符,一些系统只支持2

Linux系统中的进程管理工具SystemD介绍

  SystemD是Linux下的一种init软件,由Lennart Poettering带头开发,并在LGPL 2.1及其后续版本许可证下开源发布.Lennart是redhat员工,但SystemD不是redhat项目.其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序. SystemD这一名字源于Unix中的一个惯例:在Unix中常以"d"作

在Linux系统中查看进程及杀死僵尸进程的方法

  ps 命令 ps 命令就是最根本相应情况下也是相当强大地进程查看命令.运用该命令可以确定有哪些进程正在运行和运行地状态. 进程 是否结束.进程有没有僵死.哪些进程占用了过多地资源等等.总之大部分信息均为可以通过执行该命令得到地. ps 命令及其参数 ps 命令最经常使用地还是用于监控后台进程地工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设 备进行通信地,所以如果需要检测其情况,便可以运用 ps 命令了. 该命令语法格式如下: ps [选项] -e 显示所有进程,环境变量 -f 全格

在win7系统中关闭进程后显示“程序无响应”怎么办?

  很多时候,咱们都需要在win7系统下载官网的任务管理器窗口中去关闭一些进程,这样不仅方便,可以一次性进行多个进程结束的操作,同时,对于一些无法关闭的窗口,咱们在任务管理器中也是可以轻松关闭的.但是这种轻松关闭对于win7系统来说却并非是每次都凑效的,有些时候,咱们在win7系统的任务管理器窗口中结束进程也会发现程序无响应的情况,那么出现这样的问题,咱们如何处理呢? 1.首先,咱们同时按下win7系统键盘上的win+r快捷键打开电脑的运行窗口,之后,咱们在窗口中输入cmd并单击回车,这样咱们就

如何用Win32 APIs枚举应用程序窗口和进程

摘要 我们在编写程序时,常常遇到的一件事情就是要准确列出系统中所有正在运行的程序或者进程.Windows 任务管理器就是这样的一个程序.它既能列出运行的桌面应用程序,又能列出系统中所有运行的进程.那么,我们在程序中如何实现这样的任务呢?本文下面将详细讨论这个问题. 枚举顶层(top-level)窗口 枚举桌面顶层窗口相对于枚举进程来说可能要容易一些.枚举桌面顶层窗口的方法是用 EnumWindows() 函数.不要用 GetWindow()来创建窗口列表,因为窗口之间复杂的父子及同胞关系(Z-O