易语言纯API枚举系统进程

取当前进程标识符

.版本 2
 
.DLL命令 取当前进程标识符_, 整数型, "kernel32.dll", "GetCurrentProcessId", , 获取当前进程一个唯一的标识符

取创建32位帮助工具快照

.版本 2
 
.DLL命令 取创建32位帮助工具快照_, 整数型, "kernel32.dll", "CreateToolhelp32Snapshot", , 取进程信息
    .参数 标志, 整数型, , lFlags
    .参数 进程标识符, 整数型, , lProcessID

寻找第一个32位模块

.版本 2
 
.DLL命令 寻找第一个32位模块_, 整数型, "kernel32.dll", "Module32First"
    .参数 快照句柄, 整数型, , hSnapshot
    .参数 模块进程结构, 模块地址_, 传址, uProcess

寻找下一个32位模块

.版本 2
 
.DLL命令 寻找下一个32位模块_, 整数型, "kernel32.dll", "Module32Next"
    .参数 快照句柄, 整数型, , hSnapshot
    .参数 模块进程结构, 模块地址_, 传址, uProcess

数据类型 MODULEENTRY32

.版本 2
 
.数据类型 模块地址_, , MODULEENTRY32
    .成员 结构大小, 整数型, , , dwSize
    .成员 模块标识符, 整数型, , , th32ModuleID
    .成员 进程标识符, 整数型, , , th32ProcessID
    .成员 模块数, 整数型, , , GlblcntUsage
    .成员 进程数, 整数型, , , ProccntUsage
    .成员 模块基址, 整数型, , , modBaseAddr
    .成员 模块基址大小, 整数型, , , modBaseSize
    .成员 模块句柄, 整数型, , , hModule
    .成员 模块名称, 字节型, , "256", szModule
    .成员 文件路径, 字节型, , "260", szExePath

枚举进程模块

.版本 2
.支持库 iext

.子程序 枚举进程模块
.局部变量 局部_模块地址, 模块地址_
.局部变量 局部_进程标识符, 整数型
.局部变量 局部_快照句柄, 整数型
.局部变量 局部_数目, 整数型
.局部变量 局部_文件名, 字节集
.局部变量 局部_路径, 字节集
.局部变量 局部_计次, 整数型
.局部变量 局部_表项索引, 整数型

局部_进程标识符 = 取当前进程标识符_ ()
局部_快照句柄 = 取创建32位帮助工具快照_ (8, 局部_进程标识符)
局部_模块地址.结构大小 = 548
局部_数目 = 寻找第一个32位模块_ (局部_快照句柄, 局部_模块地址)
超级列表框_效果.全部删除 ()
.判断循环首 (局部_数目 ≠ 0)
局部_文件名 = 取空白字节集 (256)
局部_路径 = 取空白字节集 (260)
.计次循环首 (256, 局部_计次)
局部_文件名 [局部_计次] = 局部_模块地址.模块名称 [局部_计次]
.计次循环尾 ()
.计次循环首 (260, 局部_计次)
局部_路径 [局部_计次] = 局部_模块地址.文件路径 [局部_计次]
.计次循环尾 ()
局部_表项索引 = 超级列表框_效果.插入表项 (, 取字节集数据 (局部_路径, #文本型, ), , , , )
超级列表框_效果.置标题 (局部_表项索引, 1, 取字节集数据 (局部_文件名, #文本型, ))
局部_数目 = 寻找下一个32位模块_ (局部_快照句柄, 局部_模块地址)
.判断循环尾 ()


发布日期:

所属分类: 易语言 标签: