易语言API获取进程程序路径

通过传递进程ID取指定进程的程序路径,成功返回程序路径,失败返回空,用到以下API:
1、CreateToolhelp32Snapshot
快照句柄 = CreateToolhelp32Snapshot (8, 进程ID)
2、CloseHandle (快照句柄)
3、目录_取system32目录
GetSystemDirectoryA(成功返回system32目录的全路径)
4、Module32First(此函数检索与进程相关联的第一个模块的信息)
5、GetSystemDirectoryA

6、自定义数据类型,进程模块信息

Win7的80端口默认是被System进程占用的

511遇见易语言模块API教程

 

1、CreateToolhelp32Snapshot

CreateToolhelp32Snapshot可以通过获取进程信息为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程建立一个快照。

.版本 2

.DLL命令 CreateToolhelp32Snapshot, 整数型, "KERNEL32.DLL", "CreateToolhelp32Snapshot", , 进程_取ID数组  创建一个进程的快照调用成功,返回快照的句柄
    .参数 dwFlags, 整数型, , //用来指定"快照"中需要返回的对象
    .参数 th32ProcessID, 整数型, ,  //一个进程ID号,用来指定要获取哪一个进程的快照,当获取系统进程列表或获取 当前进程快照时可以设为0

 2、CloseHandle (快照句柄)

CloseHandle包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。

.版本 2

.DLL命令 CloseHandle, 整数型, "kernel32", "CloseHandle", , 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等。涉及文件处理时,这个函数通常与vb的close命令相似。应尽可能的使用close,因为它支持vb的差错控制。注意这个函数使用的文件句柄与vb的文件编号是完全不同的  非零表示成功,零表示失败。会设置GetLastError
    .参数 对象句柄, 整数型, , 欲关闭的一个对象的句柄;

3、目录_取system32目录

.版本 2

.子程序 目录_取system32目录, 文本型, 公开, 返回:比如c:\WINDOWS\system32\
.局部变量 j_text, 文本型

j_text = 取空白文本 (255)
GetSystemDirectoryA (j_text, 255)
.如果真 (取文本右边 (j_text, 1) ≠ “\”)
    j_text = j_text + “\”
.如果真结束
返回 (j_text)

4、Module32First

.版本 2

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

5、GetSystemDirectoryA

.版本 2

.DLL命令 GetSystemDirectoryA, 整数型, "kernel32", "GetSystemDirectoryA", , 目录_取system32目录 这个函数能取得Windows系统目录(System目录)的完整路径名。
    .参数 缓冲区, 文本型, , 用于装载系统目录路径名的一个字串缓冲区。它应事先初始化成nSize+1个字符的长度。通常至少要为这个缓冲区分配MAX_PATH个字符的长度
    .参数 缓冲区长度, 整数型, , lpBuffer字串的最大长度;255

6、自定义数据类型进程模块信息

.版本 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结尾的字符串,其中包含的位置,或模块的路径。

7、进程取程序路径易语言源码:

.版本 2

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

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

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

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

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

参考:

https://baike.baidu.com/item/MODULEENTRY32/926525?fr=aladdin
https://technet.microsoft.com/zh-cn/library/ms886756

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

511遇见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值