您好,登錄后才能下訂單哦!
小編給大家分享一下易語言如何實現修改軟件版權信息的工具,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
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, “提示”) .子程序 _設置按鈕_被單擊 版權 ()
運行結果:
以上是“易語言如何實現修改軟件版權信息的工具”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。