为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言例程 正文

易语言取PE版本信息源码

三叶资源网 2019-10-20 12:29:38 易语言例程 1357 ℃ 0 评论
.版本 2

.程序集 wz_PE版本信息类, , 公开
.程序集变量 _buffer, 字节集
.程序集变量 _size, 整数型

.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用



.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用

销毁 ()

.子程序 销毁, , 公开

_buffer = {  }
_size = 0

.子程序 初始化, 逻辑型, 公开
.参数 文件名, 文本型, 可空, 为空则为当前运行文件名

销毁 ()
.如果真 (文件名 = “”)
    文件名 = 取运行目录 () + “” + 取执行文件名 ()
.如果真结束
_size = GetFileVersionInfoSize (文件名, 0)
.如果真 (_size ≤ 0)
    销毁 ()
    返回 (假)
.如果真结束
_buffer = 取空白字节集 (_size)
.如果真 (GetFileVersionInfo (文件名, 0, _size, _buffer) = 假)
    销毁 ()
    返回 (假)
.如果真结束
返回 (真)

.子程序 取缓冲区, 字节集, 公开

返回 (_buffer)

.子程序 取版本信息, PE版本信息, 公开
.参数 语言集, 文本型, 可空, 如果省略,则不获取语言集相关的信息,如文件描述、内部名称等
.局部变量 size, 整数型
.局部变量 pbuffer, 整数型
.局部变量 bool, 逻辑型
.局部变量 info, PE版本信息
.局部变量 buffer, 文本型
.局部变量 a, 文本型, , "0"
.局部变量 b, 整数型
.局部变量 lang, 文本型, , "0"

bool = VerQueryValue (_buffer, “”, pbuffer, size)
.如果真 (bool = 假 或 size ≠ 52)
    返回 (info)
.如果真结束
CopyMemory_Info (info, pbuffer, size)
.如果真 (是否为空 (语言集))
    返回 (info)
.如果真结束
a = 分割文本 (“Comments,CompanyName,FileDescription,FileVersion,InternalName,LegalCopyright,LegalTrademarks,OriginalFilename,PrivateBuild,ProductName,ProductVersion,SpecialBuild”, “,”, )
.计次循环首 (取数组成员数 (a), b)
    .如果真 (VerQueryValue (_buffer, “StringFileInfo\” + 语言集 + “” + a [b], pbuffer, size))
        buffer = 取空白文本 (size)
        CopyMemory_str (buffer, pbuffer, size)
        .判断开始 (b = 1)
            info.Comments = buffer
        .判断 (b = 2)
            info.CompanyName = buffer
        .判断 (b = 3)
            info.FileDescription = buffer
        .判断 (b = 4)
            info.FileVersion = buffer
        .判断 (b = 5)
            info.InternalName = buffer
        .判断 (b = 6)
            info.LegalCopyright = buffer
        .判断 (b = 7)
            info.LegalTrademarks = buffer
        .判断 (b = 8)
            info.OriginalFilename = buffer
        .判断 (b = 9)
            info.PrivateBuild = buffer
        .判断 (b = 10)
            info.ProductName = buffer
        .判断 (b = 11)
            info.ProductVersion = buffer
        .判断 (b = 12)
            info.SpecialBuild = buffer
        .默认

        .判断结束

    .如果真结束

.计次循环尾 ()
返回 (info)

.子程序 取语言集, 整数型, 公开, 一个PE文件可能包含多个不同语言的版本信息,如同时包含中文和英文信息,返回结果数组成员数,失败返回0
.参数 结果, 文本型, 参考 数组, 类似080404b0
.局部变量 size, 整数型
.局部变量 pbuffer, 整数型
.局部变量 bool, 逻辑型
.局部变量 lang, 文本型
.局部变量 i, 整数型

清除数组 (结果)
bool = VerQueryValue (_buffer, “VarFileInfo\Translation”, pbuffer, size)
.如果真 (bool)
    .计次循环首 (size ÷ 4, i)
        lang = 取空白文本 (8)
        wvsprintf (lang, “%08x”, pbuffer + (i - 1) × 4)
        加入成员 (结果, 取文本右边 (lang, 4) + 取文本左边 (lang, 4))
    .计次循环尾 ()
.如果真结束
返回 (取数组成员数 (结果))

@林中道士

文件下载


来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
微信网页版协议B站易语言做网站Java支持库多线程ExDUI视频教程超级编辑框今日头条酷Q Airiiilab视频解析仿360纵向滚动条APP登录淘宝时间同步TCP挂机心跳通用架构JMAIL.dllPOST调试工具炫彩设计器工程万花尺文本颜色自媒体平台sock5
最新评论