易語言修改軟件版權信息的工具

今天小編就爲大家分享一篇關於易語言修改軟件版權信息的工具,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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, “提示”)
.子程序 _設置按鈕_被單擊
版權 ()

運行結果:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對神馬文庫的支持。如果你想了解更多相關內容請查看下面相關鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章