TC官方合作论坛

 找回密码
 立即注册
查看: 1957|回复: 2

[功能] 【TC8.0】系统API应用之进程ID取进程名_纯TC源码

[复制链接]
发表于 2022-8-29 03:46:10 | 显示全部楼层 |阅读模式

马上加入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’函数。
        
    结束
   
    返回 进程名
   
结束
回复

使用道具 举报

发表于 2022-8-29 03:59:24 | 显示全部楼层
技术贴 支持!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2022-12-11 08:57:41 | 显示全部楼层
TC有个进程信息api,满足大部分应用,不过你这精神可嘉
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-5-3 19:35 , Processed in 0.031823 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表