马上加入TC
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 flying 于 2022-8-29 04:03 编辑
整理硬盘翻出来的代码,TC7应该也能用吧。
功能 进程ID取进程名(参_进程ID) //成功返回进程名,失败返回""。
变量 进程快照句柄, 进程名 = ""
参_进程ID = 转整型(参_进程ID)
进程快照句柄 = 动态库调用("kernel32.dll", "long", "CreateToolhelp32Snapshot", "long", 2, "long", 0) //TH32CS_SNAPPROCESS = 2
如果(进程快照句柄 != -1) //如果函数失败返回:INVALID_HANDLE_VALUE = -1
变量 PROCESSENTRY32 = 数组("dwSize" = 数组("long" = "1", "value" = 296), "cntUsage" = 数组("long" = "1", "value" = 0), "th32ProcessID" = 数组("long" = "1", "value" = 0), "th32DefaultHeapID" = 数组("long" = "1", "value" = 0), "th32ModuleID" = 数组("long" = "1", "value" = 0), "cntThreads" = 数组("long" = "1", "value" = 0), "th32ParentProcessID" = 数组("long" = "1", "value" = 0), "pcPriClassBase" = 数组("long" = "1", "value" = 0), "dwFlags" = 数组("long" = "1", "value" = 0), "szExeFile" = 数组("char" = "260", "value" = ""))
变量 结构体地址, ret
结构体地址 = 结构体申请内存(PROCESSENTRY32)
如果(结构体地址 == 0)
动态库调用("kernel32.dll", "long", "CloseHandle", "long", 进程快照句柄)
返回 进程名
结束
ret = 动态库调用("kernel32.dll", "long", "Process32Next", "long", 进程快照句柄, "long", 结构体地址)
如果(结构体获取内存数据(结构体地址, PROCESSENTRY32) == 假)
结构体释放内存(结构体地址)
动态库调用("kernel32.dll", "long", "CloseHandle", "long", 进程快照句柄)
返回 进程名
结束
循环(ret != 0)
如果(PROCESSENTRY32["th32ProcessID"]["value"] == 参_进程ID)
进程名 = 转字符型(PROCESSENTRY32["szExeFile"]["value"])
跳出
结束
ret = 动态库调用("kernel32.dll", "long", "Process32Next", "long", 进程快照句柄, "long", 结构体地址)
如果(结构体获取内存数据(结构体地址, PROCESSENTRY32) == 假)
结构体释放内存(结构体地址)
动态库调用("kernel32.dll", "long", "CloseHandle", "long", 进程快照句柄)
返回 进程名
结束
结束
结构体释放内存(结构体地址)
动态库调用("kernel32.dll", "long", "CloseHandle", "long", 进程快照句柄)
// ‘CloseHandle’函数来关闭快照句柄,这将生成内存泄漏。
//注意:在‘Win NT’中,要删除快照,使用‘CloseHandle’函数;在‘Win CE’中,要删除快照,使用‘CloseToolhelp32Snapshot’函数。
结束
返回 进程名
结束
|