易语言API模块制作进程取程序路径,提高进程的PID获取程序的所在路径。

e764949c323b66064577c064d381b2f8.png

进程_取程序路径

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 (快照句柄)

返回 (路径)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐