⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 新建 文本文档.txt

📁 使用delphi实现获得系统的所有运行进程和每个运行进程所调用模块的信息
💻 TXT
字号:
要实现获得系统的所有运行进程和每个运行进程所调用模块的信息,实际上只要使用两重循环,外循环获取系统的所有进程列表,内循环获取每个进程所调用模块列表。用以下四组API调用实现: 

1、创建系统的所有进程列表 

ProcessList:= CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS,0); 

2、提取进程列表项信息存储在TPROCESSENTRY32 pe中 

Process32First(ProcessList,pe) 

Process32Next(ProcessList,pe) 

3、创建指定进程所有调用模块列表 

ModuleList:=CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, 

pe.processID); 

4、提取调用模块列表项信息存储在TMODULEENTRY32 pm中 

Module32First(ModuleList,pm); 

Module32Next(ModuleList,pm); 

三、核心源码 

有了以上知识以后,我们就可以很容易地实现获取系统的所有进程以及各进程运行过程所调用的模块文件了。具体步骤如下: 

1、运行Delphi,进入Delphi的IDE开发环境; 

2、新建Application; 

3、在默认的Form1中添加Treeview和Button控件; 

4、设置Button的OnClick属性为ProcessEnum; 

5、把以下代码输入ProcessEnum过程中; 

6、编译运行; 


核心代码如下所示: 


uses Tlhelp32; 

procedure TForm1.ProcessEnum(Sender: TObject); 

var 

ProcessList :Thandle; 

pe :TPROCESSENTRY32; 

node :TTreenode; 

processnumber :integer; 

procedure ModuleEnum(processid:Dword); 

var 

ModuleList :Thandle; 

pm :TMODULEENTRY32; 

begin 

ModuleList:=CreateToolhelp32Snapshot
(TH32CS_SNAPMODULE,processID); 

pm.dwSize:=sizeof(TMODULEENTRY32); 

if module32first(ModuleList,pm) 

then begin 

treeview1.Items.addchild(node,pm.szexepath); 

while module32next(ModuleList,pm) do 

treeview1.items.addchild(node,pm.szexepath); 

end; 

closehandle(ModuleList); 

end; // ModuleEnum  

begin // ProcessEnum 

processnumber:=0; 

treeview1.Items.Clear; 

ProcessList:=CreateToolhelp32Snapshot
(TH32CS_SNAPPROCESS,0); 

pe.dwSize:=sizeof(TPROCESSENTRY32); 

if process32first(ProcessList,pe) then 

begin 

node:=treeview1.Items.Add(nil,pe.szexefile); 

ModuleEnum(pe.th32ProcessID); 

inc(processnumber); 

while process32next(ProcessList,pe) do 

begin 

node:=treeview1.Items.Add(nil,pe.szexefile); 

ModuleEnum(pe.th32ProcessID); 

inc(processnumber); 

end; 

end; 

edit1.text:=’系统进程:’+inttostr(processnumber); 

closehandle(ProcessList); 

end;  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -