易语言修改软件版权信息的工具

DLL命令表

.版本 2
.DLL命令 BeginUpdateResource, 整数型, , "BeginUpdateResourceA"
  .参数 pFileName, 文本型
  .参数 bDeleteExistingResources, 逻辑型
.DLL命令 EndUpdateResource, 逻辑型, , "EndUpdateResourceA"
  .参数 hUpdate, 整数型
  .参数 fDiscard, 逻辑型
.DLL命令 UpdateResource, 逻辑型, , "UpdateResourceA"
  .参数 hUpdate, 整数型
  .参数 lpType, 整数型
  .参数 lpName, 整数型
  .参数 wLanguage, 整数型
  .参数 lpData, 字节集
  .参数 cbData, 整数型
.DLL命令 CopyMemory_vf, , , "RtlMoveMemory"
  .参数 Destination, 字节集
  .参数 Source, VS_FIXEDFILEINFO
  .参数 cbCopy, 整数型
.DLL命令 MultiByteToWideChar, 整数型, , "MultiByteToWideChar"
  .参数 CodePage, 整数型
  .参数 dwFlags, 整数型
  .参数 lpMultiByteStr, 文本型
  .参数 cchMultiByte, 整数型
  .参数 lpWideCharStr, 字节集
  .参数 cchWideChar, 整数型

常量数据表

.版本 2
.常量 版本信息, "<文本长度: 537>"

自定义数据类型表

.版本 2
.数据类型 VS_FIXEDFILEINFO
  .成员 dwSignature, 整数型
  .成员 dwStrucVersion, 整数型
  .成员 dwFileVersionMS, 整数型
  .成员 dwFileVersionLS, 整数型
  .成员 dwProductVersionMS, 整数型
  .成员 dwProductVersionLS, 整数型
  .成员 dwFileFlagsMask, 整数型
  .成员 dwFileFlags, 整数型
  .成员 dwFileOS, 整数型
  .成员 dwFileType, 整数型
  .成员 dwFileSubtype, 整数型
  .成员 dwFileDateMS, 整数型
  .成员 dwFileDateLS, 整数型
.数据类型 版权信息型, 公开
  .成员 公司, 文本型
  .成员 描述, 文本型
  .成员 文件版本, 文本型
  .成员 内部名称, 文本型
  .成员 版权, 文本型
  .成员 源文件名, 文本型
  .成员 产品名称, 文本型
  .成员 产品版本, 文本型

修改EXE属性版权信息

.版本 2
.支持库 edroptarget
.程序集 窗口程序集1
.子程序 修改版权信息, , 公开, 修改指定EXE文件版权信息
.参数 文件名, 文本型
.参数 版本信息, 版权信息型
.局部变量 更新句柄, 整数型
.局部变量 版本信息数据, 字节集
.局部变量 文件数据, 字节集
.局部变量 检查后文件数据, 字节集
.局部变量 尾部数据, 字节集
.局部变量 版本信息内容, 文本型
文件数据 = 读入文件 (文件名)
' 先更新一下文件,如果是独立编译的易程序,会丢失后面的数据
更新句柄 = BeginUpdateResource (文件名, 假)
EndUpdateResource (更新句柄, 假)
版本信息内容 = #版本信息
版本信息内容 = 子文本替换 (版本信息内容, “公司”, 版本信息.公司, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “描述”, 版本信息.描述, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “版权”, 版本信息.版权, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “文件版本”, 版本信息.文件版本, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “内部名称”, 版本信息.内部名称, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “源文件名”, 版本信息.源文件名, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “产品名称”, 版本信息.产品名称, , , 真)
版本信息内容 = 子文本替换 (版本信息内容, “产品版本”, 版本信息.产品版本, , , 真)
版本信息数据 = 从文本转换版本信息 (版本信息内容)
检查后文件数据 = 读入文件 (文件名)
.判断开始 (取字节集长度 (检查后文件数据) = 取字节集长度 (文件数据))
  更新句柄 = BeginUpdateResource (文件名, 假)
  UpdateResource (更新句柄, 16, 1, 2052, 版本信息数据, 取字节集长度 (版本信息数据))
  EndUpdateResource (更新句柄, 假)
.判断 (取字节集长度 (检查后文件数据) < 取字节集长度 (文件数据))
  尾部数据 = 取字节集右边 (文件数据, 取字节集长度 (文件数据) - 取字节集长度 (检查后文件数据))
  更新句柄 = BeginUpdateResource (文件名, 假)
  UpdateResource (更新句柄, 16, 1, 2052, 版本信息数据, 取字节集长度 (版本信息数据))
  EndUpdateResource (更新句柄, 假)
  写到文件 (文件名, 读入文件 (文件名) + 尾部数据)
.默认
.判断结束
.子程序 获取下一行, 逻辑型
.参数 文本, 文本型, 参考
.参数 行文本数组, 文本型, 参考 数组
.参数 索引, 整数型, 参考
.如果真 (取数组成员数 (行文本数组) ≥ 索引)
  文本 = 行文本数组 [索引]
  索引 = 索引 + 1
  返回 (真)
.如果真结束
返回 (假)
.子程序 从文本转换版本信息, 字节集
.参数 文本版本信息, 文本型
.局部变量 行_文本, 文本型
.局部变量 行_类型, 文本型
.局部变量 文本数组, 文本型, , "0"
.局部变量 位置1, 整数型
.局部变量 vf, VS_FIXEDFILEINFO
.局部变量 数据, 字节集
.局部变量 行_数组, 文本型, , "0"
.局部变量 索引, 整数型
.局部变量 字节集, 字节集
行_数组 = 分割文本 (文本版本信息, #换行符, )
索引 = 1
vf.dwSignature = -17890115
vf.dwStrucVersion = 1
vf.dwFileFlagsMask = 63
.判断循环首 (获取下一行 (行_文本, 行_数组, 索引))
  行_类型 = 获取行类型 (行_文本)
  .判断开始 (行_类型 = “FILEVERSION”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    文本数组 = 分割文本 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)), “,”, )
    .如果真 (取数组成员数 (文本数组) ≥ 4)
      vf.dwFileVersionMS = 位或 (到整数 (文本数组 [2]), 左移 (到整数 (文本数组 [1]), 16))
      vf.dwFileVersionLS = 位或 (到整数 (文本数组 [4]), 左移 (到整数 (文本数组 [3]), 16))
    .如果真结束
  .判断 (行_类型 = “PRODUCTVERSION”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    文本数组 = 分割文本 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)), “,”, )
    .如果真 (取数组成员数 (文本数组) ≥ 4)
      vf.dwProductVersionMS = 位或 (到整数 (文本数组 [2]), 左移 (到整数 (文本数组 [1]), 16))
      vf.dwProductVersionLS = 位或 (到整数 (文本数组 [4]), 左移 (到整数 (文本数组 [3]), 16))
    .如果真结束
  .判断 (行_类型 = “FILEOS”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    vf.dwFileOS = 十六到十 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)))
  .判断 (行_类型 = “FILETYPE”)
    位置1 = 寻找文本 (行_文本, “ ”, , 假)
    vf.dwFileType = 十六到十 (My删首尾空 (取文本右边 (行_文本, 取文本长度 (行_文本) - 位置1)))
  .判断 (行_类型 = “{”)
    跳出循环 ()
  .默认
  .判断结束
.判断循环尾 ()
数据 = 取空白字节集 (13 × 4)
CopyMemory_vf (数据, vf, 13 × 4)
字节集 = { 0, 0, 52, 0, 0, 0, 86, 0, 83, 0, 95, 0, 86, 0, 69, 0, 82, 0, 83, 0, 73, 0, 79, 0, 78, 0, 95, 0, 73, 0, 78, 0, 70, 0, 79, 0, 0, 0, 0, 0 } + 数据
分析BLOCK (字节集, 行_数组, 索引)
字节集 = 字节集替换 (字节集, 1, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (字节集))))
返回 (字节集)
.子程序 分析BLOCK
.参数 字节集, 字节集
.参数 行文本数组, 文本型, 参考 数组
.参数 索引, 整数型, 参考
.局部变量 行_文本, 文本型
.局部变量 行_类型, 文本型
.局部变量 sizeaoffset, 整数型
.局部变量 a
.判断循环首 (获取下一行 (行_文本, 行文本数组, 索引))
  行_类型 = 获取行类型 (行_文本)
  .判断开始 (行_类型 = “BLOCK”)
    sizeaoffset = 取字节集长度 (字节集) + 1 ' 记录该BLOCK的起始位置
    字节集 = 字节集 + MAKEBLOCK (行_文本) ' 建立BLOCK字节集,并与之前的字节集合并
    分析BLOCK (字节集, 行文本数组, 索引)
    字节集 = 字节集替换 (字节集, sizeaoffset, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (字节集) - sizeaoffset + 1))) ' 把字节集长度写回该BLOCK的起始位置
    a = 1
  .判断 (行_类型 = “VALUE”)
    字节集 = 字节集 + MAKEVALUE (行_文本) ' 建立VALUE字节集,并与之前的字节集合并
  .判断 (行_类型 = “}”)
    返回 ()
  .默认
  .判断结束
.判断循环尾 ()
.子程序 MAKEVALUE, 字节集
.参数 VALUE, 文本型
.局部变量 位置_左引号, 整数型
.局部变量 位置_右引号, 整数型
.局部变量 位置_逗号, 整数型
.局部变量 文本, 文本型
.局部变量 数据, 字节集
.局部变量 数据2, 字节集
.局部变量 文本数组, 文本型, , "0"
位置_逗号 = 寻找文本 (VALUE, “,”, , 假)
位置_右引号 = 倒找文本 (VALUE, #引号, 位置_逗号, 假)
位置_左引号 = 寻找文本 (VALUE, #引号, , 假)
.如果真 (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1) = “Translation”)
  ' 第1、2字节用于占用,待分析结束后,把数据的长度数值写回第1、2字节
  数据 = { 0, 0, 0, 0, 1, 0 } + 转换Ansi转Unicode (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1))
  .如果真 (取字节集长度 (数据) % 4 ≠ 0)
    数据 = 数据 + 取空白字节集 (4 - 取字节集长度 (数据) % 4)
  .如果真结束
  文本 = My删首尾空 (取文本右边 (VALUE, 取文本长度 (VALUE) - 位置_逗号))
  文本数组 = 分割文本 (文本, “ ”, )
  .如果真 (取数组成员数 (文本数组) ≥ 2)
    数据2 = 到字节集 (到短整数 (十六到十 (文本数组 [1]))) + 到字节集 (到短整数 (十六到十 (文本数组 [2])))
    数据 = 字节集替换 (数据, 3, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据2))))
    数据 = 数据 + 数据2
    返回 (字节集替换 (数据, 1, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据)))))
  .如果真结束
  返回 ({ })
.如果真结束
' 第1、2字节用于占用,待分析结束后,把数据的长度数值写回第1、2字节
数据 = { 0, 0, 0, 0, 1, 0 } + 转换Ansi转Unicode (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1))
.如果真 (取字节集长度 (数据) % 4 ≠ 0)
  数据 = 数据 + 取空白字节集 (4 - 取字节集长度 (数据) % 4)
.如果真结束
位置_左引号 = 寻找文本 (VALUE, #引号, 位置_逗号, 假)
位置_右引号 = 倒找文本 (VALUE, #引号, , 假)
数据2 = 转换Ansi转Unicode (取文本中间 (VALUE, 位置_左引号 + 1, 位置_右引号 - 位置_左引号 - 1))
.如果真 (取字节集长度 (数据2) % 4 ≠ 0)
  数据2 = 数据2 + 取空白字节集 (4 - 取字节集长度 (数据2) % 4)
.如果真结束
数据 = 字节集替换 (数据, 3, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据2) ÷ 2)))
数据 = 数据 + 数据2
返回 (字节集替换 (数据, 1, 取数据类型尺寸 (#短整数型), 到字节集 (到短整数 (取字节集长度 (数据)))))
.子程序 转换Ansi转Unicode, 字节集, 公开, 将Ansi码转换为Unicode码 (返回转换后的字节集)
.参数 Ansi, 文本型, , 欲转换的Ansi文本
.局部变量 数据2, 字节集
.局部变量 长度
.如果真 (Ansi = “”)
  返回 ({ 0, 0 })
.如果真结束
长度 = MultiByteToWideChar (0, 0, Ansi, 取文本长度 (Ansi) + 1, 数据2, 0)
数据2 = 取空白字节集 (长度 × 2)
MultiByteToWideChar (0, 0, Ansi, 取文本长度 (Ansi) + 1, 数据2, 长度 × 2)
返回 (数据2)
.子程序 MAKEBLOCK, 字节集
.参数 BLOCK, 文本型
.局部变量 位置1, 整数型
.局部变量 位置2, 整数型
.局部变量 数据, 字节集
位置1 = 寻找文本 (BLOCK, #引号, , 假)
位置2 = 倒找文本 (BLOCK, #引号, , 假)
' 第1、2字节用于占用,待分析结束后,把数据的长度数值写回第1、2字节
数据 = { 0, 0, 0, 0, 1, 0 } + 转换Ansi转Unicode (取文本中间 (BLOCK, 位置1 + 1, 位置2 - 位置1 - 1))
.如果真 (取字节集长度 (数据) % 4 ≠ 0)
  数据 = 数据 + 取空白字节集 (4 - 取字节集长度 (数据) % 4)
.如果真结束
返回 (数据)
.子程序 十六到十, 整数型, 公开, 将十六进制转换成十进制(返回十进制文本)
.参数 十六进制文本, 文本型, , 待转换的十六进制文本
.参数 返回结果, 文本型, 参考 可空, 返回文本结果(如十进制数超出整数范围,可通过返回结果获得十进制文本)
.局部变量 中间文本, 文本型
.局部变量 结果, 长整数型
.局部变量 容器1, 整数型
返回结果 = “”
.变量循环首 (1, 取文本长度 (十六进制文本), 1, 容器1)
  中间文本 = 取文本中间 (十六进制文本, 容器1, 1)
  结果 = (寻找文本 (“0123456789ABCDEF”, 中间文本, , 真) - 1) × 求次方 (16, 取文本长度 (十六进制文本) - 容器1) + 结果
.变量循环尾 ()
.如果真 (是否为空 (返回结果) = 假)
  返回结果 = 到文本 (结果)
.如果真结束
返回 (结果)
.子程序 My删首尾空, 文本型
.参数 文本, 文本型
.局部变量 字节集, 字节集
.局部变量 n, 整数型
.局部变量 pos1, 整数型
.局部变量 pos2, 整数型
字节集 = 到字节集 (文本)
.变量循环首 (1, 取字节集长度 (字节集), 1, n)
  .如果真 (字节集 [n] ≠ #空格键 且 字节集 [n] ≠ #Tab键)
    pos1 = n
    跳出循环 ()
  .如果真结束
.变量循环尾 ()
.变量循环首 (取字节集长度 (字节集), 1, -1, n)
  .如果真 (字节集 [n] ≠ #空格键 且 字节集 [n] ≠ #Tab键)
    pos2 = n
    跳出循环 ()
  .如果真结束
.变量循环尾 ()
返回 (取文本中间 (文本, pos1, pos2 - pos1 + 1))
.子程序 获取行类型, 文本型
.参数 行文本, 文本型
行文本 = My删首尾空 (行文本)
.判断开始 (取文本左边 (行文本, 1) = “{”)
  返回 (“{”)
.判断 (取文本左边 (行文本, 1) = “}”)
  返回 (“}”)
.判断 (取文本左边 (行文本, 5) = “BLOCK”)
  返回 (“BLOCK”)
.判断 (取文本左边 (行文本, 5) = “VALUE”)
  返回 (“VALUE”)
.判断 (取文本左边 (行文本, 取文本长度 (“FILEVERSION”)) = “FILEVERSION”)
  返回 (“FILEVERSION”)
.判断 (取文本左边 (行文本, 取文本长度 (“PRODUCTVERSION”)) = “PRODUCTVERSION”)
  返回 (“PRODUCTVERSION”)
.判断 (取文本左边 (行文本, 取文本长度 (“FILEOS”)) = “FILEOS”)
  返回 (“FILEOS”)
.判断 (取文本左边 (行文本, 取文本长度 (“FILETYPE”)) = “FILETYPE”)
  返回 (“FILETYPE”)
.默认
.判断结束
返回 (“”)
.子程序 __启动窗口_创建完毕
拖放对象1.注册拖放控件 (_启动窗口.取窗口句柄 ())
.子程序 _拖放对象1_得到文件
.参数 接收到的文件路径, 文本型
编辑框_路径.内容 = 接收到的文件路径
.子程序 版权
.局部变量 版权, 版权信息型
.局部变量 文件名, 文本型
版权.公司 = 编辑框_公司.内容
版权.描述 = 编辑框_描述.内容
版权.版权 = 编辑框_版权.内容
版权.文件版本 = 编辑框_版本.内容
版权.源文件名 = 编辑框_源文件名.内容
版权.内部名称 = 编辑框_内部名.内容
版权.产品名称 = 编辑框_产品名.内容
版权.产品版本 = 编辑框_产品版本.内容
修改版权信息 (编辑框_路径.内容, 版权)
信息框 (“修改完成..”, 64, “提示”)
.子程序 _设置按钮_被单击
版权 ()

运行结果:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • 易语言制作黑客小程序源码

    DLLL命令表 .版本 2 .DLL命令 FindWindow, 整数型, , "FindWindowA" .参数 lpClassName, 文本型 .参数 lpWindowName, 整数型 .DLL命令 FindWindowA, 整数型, , "FindWindowA" .参数 lpClassName, 文本型 .参数 lpWindowName, 文本型 .DLL命令 GetWindow, 整数型, , "GetWindow" .参数 hWn

  • 易语言制作王校长吃热狗游戏的源码

    王校长吃热狗游戏 .版本 2 .支持库 iext2 .支持库 OPenGL .支持库 spec .支持库 EThread .程序集 窗口程序集_启动窗口 .程序集变量 人物标识, 整数型 .程序集变量 热狗标识, 整数型, , "0" .程序集变量 死亡, 逻辑型 .程序集变量 得分, 整数型 .子程序 _开始按钮_被单击 动画物体2.图片 = #人物 人物标识 = 动画框1.创建物体 (动画物体2, 取鼠标水平位置 () - _启动窗口.左边 - 25, 取鼠标垂直位置 () - _

  • 易语言制作英雄联盟辅助的源码

    LOL辅助 此功能需要加载超级模块7.3 .版本 2 .程序集 窗口程序集_启动窗口 .程序集变量 pid, 整数型 .子程序 __启动窗口_创建完毕 pid = 取进程ID ("League of Legends.exe") 监视热键 (&开启无限视距, #F5键) 监视热键 (&关闭无限视距, #F6键) 监视热键 (&开启普攻范围, #F2键) 监视热键 (&关闭普攻范围, #F1键) 监视热键 (&开启炮塔范围, #F4键) 监视热键 (

  • 易语言电脑屏幕锁定工具源码

    DLLL命令表 .版本 2 .DLL命令 安装钩子, 整数型, , "SetWindowsHookExA" .参数 ihook, 整数型 .参数 lpfunc, 子程序指针 .参数 hin, 整数型 .参数 threadid, 整数型 .DLL命令 卸载钩子, 整数型, , "UnhookWindowsHookEx" .参数 hHook, 整数型 .DLL命令 下一个钩子, 整数型, , "CallNextHookEx" .参数 hHook, 整

  • 易语言表白网页生成器源码

    表白网页生成器 .版本 2 .支持库 iext .支持库 spec .程序集 窗口程序集1 .子程序 _按钮_本地生成_被单击 透明标签3.标题 = "xx提醒您正在生成,,请稍候..." 创建目录 (取运行目录 () + "/本地专用版") 编辑框2.内容 = 子文本替换 (编辑框3.内容, "对方名字", 编辑框_对方名字.内容, , , 真) 延迟 (200) 编辑框5.内容 = 子文本替换 (编辑框2.内容, "自己名字&quo

  • 易语言获取程序已运行时间的代码

    获取程序已运行时间 .版本 2 .支持库 iext .程序集 窗口程序集1 .子程序 _时钟1_周期事件 .局部变量 hr, 整数型, 静态 .局部变量 min, 整数型, 静态 .局部变量 sec, 整数型, 静态 sec = sec + 1 .如果真 (sec = 60) sec = 0 min = min + 1 .如果真结束 .如果真 (min = 60) min = 0 hr = hr + 1 .如果真结束 状态条1.置文本 (0, "已运行:" + 取文本右边 ("

  • 易语言超级列表框表项关键字搜索代码示例

    超级列表框表项关键字搜索示例 .版本 2 .支持库 iext .程序集 启动窗口程序集 .程序集变量 表项索引, 整数型 .子程序 _查找表项按钮_被单击 .局部变量 临时文本, 文本型 .局部变量 索引, 整数型 .局部变量 是否找到, 逻辑型 .局部变量 a, 整数型 .如果真 (输入框 ("请输入需要查找的内容", "查找表项", "易语言7", 临时文本, ) = 真) 是否找到 = 假 .计次循环首 (超级列表框.取表项数 (), a)

  • 易语言制作DNF解封源码

    DNF解封源码 需要加载精易模块7.0 .版本 2 .支持库 HtmlView .支持库 spec .程序集 窗口程序集__启动窗口 .程序集变量 Cookie, 文本型 .程序集变量 浏览器组地址, 文本型 .子程序 __启动窗口_创建完毕 .局部变量 ADD_数据包, 类_POST数据类 .局部变量 方式, 整数型 .局部变量 局_结果, 字节集 .局部变量 局_返回, 文本型 .局部变量 局_提交数据, 文本型 方式 = 1 浏览器组地址 = "https://act.gamesafe.q

  • 易语言实现QQ全自动批量点赞功能

    利用模拟操作的方式实现QQ全自动点赞 此功能需要加载精易模块 .版本 2 .支持库 iext .支持库 HtmlView .支持库 spec .程序集 窗口程序集1 .程序集变量 停止变量, 逻辑型 .子程序 __启动窗口_创建完毕 ' 不允许多个QQ登录,不然每次需要手动选择点赞的号 .子程序 _导入按钮_被单击 .局部变量 分割文本, 文本型, , "0" .局部变量 文本, 文本型 .局部变量 i1, 整数型 .局部变量 索引, 整数型 通用对话框1.初始目录 = 取运行目录 (

  • 易语言赋值定义多维数组的代码实例

    赋值定义多维数组示例 .版本 2 .程序集 窗口程序集1 .子程序 _按钮_显示_被单击 .局部变量 a, 整数型, , "0" .局部变量 c, 整数型, , "1,2" .局部变量 b, 整数型 a = { 1, 12, 2, 22, 3, 32, 4, 42 } .变量循环首 (1, 取整 (取数组成员数 (a) ÷ 2), 1, b) 重定义数组 (c, 真, b, 2) c [b] [1] = a [b × 2 - 1] 编辑框_显示.加入文本 (&quo

随机推荐