|
地板
发表于 2025-2-5 14:38:02
|
只看该作者
云南省昆明市
.版本 2
.支持库 shell32
.支持库 user32
.支持库 kernel32
.支持库 version
// API 声明
声明 GetModuleFileNameA, 整数, "kernel32.dll", 公开, 另取整型, 整型, 文本, 整型
声明 GetFileVersionInfoSizeA, 整型, "version.dll", 公开, 文本, 整型
声明 GetFileVersionInfoA, 逻辑型, "version.dll", 公开, 文本, 整型, 整型, 整型
声明 VerQueryValueA, 逻辑型, "version.dll", 公开, 整型, 文本, 整型, 整型
// 取进程的 EXE 文件路径
函数 取进程路径, 文本, 公开, 整型 进程ID
变量 句柄, 整型
变量 路径, 文本, 260
句柄 = OpenProcess(0x0410, 假, 进程ID)
如果 句柄 = 0
返回 ""
结束
如果 GetModuleFileNameA(句柄, 路径, 260) > 0
关闭句柄(句柄)
返回 路径
结束
关闭句柄(句柄)
返回 ""
// 取文件版本信息
函数 取进程版本信息, 文本, 公开, 文本 文件路径
变量 大小, 整型
变量 数据, 文本
变量 指针, 整型
变量 版本信息, 文本
大小 = GetFileVersionInfoSizeA(文件路径, 0)
如果 大小 = 0
返回 "无法获取版本信息"
结束
数据 = 到二进制数据("", 大小)
如果 GetFileVersionInfoA(文件路径, 0, 大小, 数据) = 假
返回 "获取版本信息失败"
结束
如果 VerQueryValueA(数据, "\\StringFileInfo\\080404b0\\FileVersion", 指针, 大小)
版本信息 = 复制文本(指针, 0, 大小)
返回 版本信息
结束
返回 "版本信息不可用"
// 示例:获取某个进程的版本信息
变量 进程路径, 文本
变量 版本, 文本
进程路径 = 取进程路径(1234) // 这里的 1234 替换为目标进程 ID
如果 进程路径 ≠ ""
版本 = 取进程版本信息(进程路径)
调试输出("进程版本:" + 版本)
否则
调试输出("无法找到进程路径")
结束
|
|