易语言API模块制作进程取程序路径

511遇见

进程_取程序路径

1、CreateToolhelp32Snapshot
快照句柄 = CreateToolhelp32Snapshot (8, 进程ID)
2、CloseHandle (快照句柄)
3、目录_取system32目录
GetSystemDirectoryA(成功返回system32目录的全路径)
4、Module32First(此函数检索与进程相关联的第一个模块的信息)
5、Win7的80端口默认是被System进程占用的
模块信息
https://baike.baidu.com/item/MODULEENTRY32/926525?fr=aladdin
https://technet.microsoft.com/zh-cn/library/ms886756

自定义数据类型

.版本 2

.数据类型 进程模块信息, 公开, 进程模块信息modBaseAddr和hModule的成员只有在指定的th32ProcessID进程中才有效。
.成员 dwSize, 整数型, , , 1指定结构的长度,以字节为单位。在调用Module32First功能,设置这个成员SIZEOF(MODULEENTRY32)。如果你不初始化的dwSize,Module32First将失败。
.成员 th32ModuleID, 整数型, , , 2此成员已经不再被使用,通常被设置为1
.成员 th32ProcessID, 整数型, , , 3正在检查的进程标识符。这个成员的内容,可以使用Win32 API的元素
.成员 GlblcntUsage, 整数型, , , 4全局模块的使用计数,即模块的总载入次数。通常这一项是没有意义的,被设置为0xFFFF。
.成员 ProccntUsage, 整数型, , , 5全局模块的使用计数(与GlblcntUsage相同)。通常这一项也是没有意义的,被设置为0xFFFF。
.成员 modBaseAddr, 整数型, , , 6模块的基址,在其所属的进程范围内。
.成员 modBaseSize, 整数型, , , 7模块的大小,单位字节。
.成员 hModule, 整数型, , , 8所属进程的范围内,模块句柄。
.成员 szModule, 字节型, , "256", NULL结尾的字符串,其中包含模块名。
.成员 szExePath, 字节型, , "256", NULL结尾的字符串,其中包含的位置,或模块的路径。

Module32First

.版本 2

.DLL命令 Module32First, 整数型, "KERNEL32.DLL", "Module32First", , 进程_取程序路径
.参数 hSnapshot, 整数型, , 快照句柄
.参数 lpme, 进程模块信息

进程_取程序路径 源码

.版本 2

.子程序 进程_取程序路径, 文本型, 公开, 取指定进程的程序路径,成功返回程序路径,失败返回空
.参数 进程ID, 整数型
.局部变量 快照句柄, 整数型
.局部变量 模块信息, 进程模块信息
.局部变量 路径, 文本型

快照句柄 = CreateToolhelp32Snapshot (8, 进程ID)
.判断开始 (进程ID = 4)
CloseHandle (快照句柄)
返回 (目录_取system32目录 ())
.判断 (进程ID = -1)
返回 (“”)
.默认

.判断结束
模块信息.dwSize = 1024
Module32First (快照句柄, 模块信息)
路径 = 到文本 (模块信息.szExePath)
.判断开始 (取文本左边 (路径, 11) = “\SystemRoot”)
路径 = 读环境变量 (“SystemRoot”) + 子文本替换 (路径, “\SystemRoot”, “”, , 1, 假)

.判断 (取文本左边 (路径, 4) = “\??\”)
路径 = 子文本替换 (路径, “\??\”, “”, , 1, 假)
.默认

.判断结束
CloseHandle (快照句柄)
返回 (路径)


发布日期:

所属分类: 编程 标签:  


没有相关文章!