精易论坛

标题: 进程_取子进程ID_模糊 [打印本页]

作者: 夏目阿布    时间: 2021-9-25 07:32
标题: 进程_取子进程ID_模糊
本帖最后由 夏目阿布 于 2021-9-25 07:35 编辑
  
子程序名返回值类型公开备 注
进程_取子进程ID_模糊整数型 取指定进程ID为父进程的子进程ID,返回找到的第一个子进程ID
参数名类 型参考可空数组备 注
进程ID整数型父进程ID
子进程名文本型模糊的子进程名
变量名类 型静态数组备 注
szExeFile字节集 
hSnapshort整数型 
pe32PROCESSENTRY32W 
bRet逻辑型 
hProcess整数型 
pbiPROCESS_BASIC_INFORMATION 
hProcessID整数型 
szExeFile = 删除Unicode结尾空白字节 (编码_Ansi到Unicode (子进程名, ))
hProcessID = #INVALID_HANDLE_VALUE
如果真 (szExeFile = {  })
返回 (hProcessID)

hSnapshort = CreateToolhelp32Snapshot ( #TH32CS_SNAPPROCESS, 0)
如果真 (hSnapshort = #INVALID_HANDLE_VALUE )
返回 (hProcessID)

pe32.dwSize = 556
bRet = Process32FirstW (hSnapshort, pe32)
判断循环首 (bRet)
如果真 (寻找字节集 (删除Unicode结尾空白字节 (到字节集 (pe32.szExeFile)), szExeFile, ) ≥ 1)
hProcess = OpenProcess ( #PROCESS_QUERY_INFORMATION, 0, pe32.th32ProcessID)
bRet = NtQueryInformationProcess (hProcess, #NULL, 取数据_通用型 (pbi), 24, #NULL ) ≥ 0
如果真 (bRet)
如果真 (pbi.InheritedFromUniqueProcessId = 进程ID)
hProcessID = pe32.th32ProcessID
跳出循环 ()

CloseHandle (hProcess)
bRet = Process32NextW (hSnapshort, pe32)
判断循环尾 ()
CloseHandle (hSnapshort)
返回 (hProcessID)



如果子进程名是调试版的状态下,没有固定的子进程名,增加这个可以把第二个参数改成“.tmp”就能取到调试版的ID


作者: Jseryi    时间: 2021-10-4 23:42
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4