同步操作将从 精易科技/eapi 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#include "..\include_eapi_header.h"#pragma comment(lib,"Version.lib")typedef struct EFileINfo{char* m_Vision;char* m_Description;char* m_InName;char* m_CompanyName;char* m_Copyright;char* m_Trademark;char* m_Name;char* m_Productname;char* m_Productversion;char* m_Language;char* m_Remarks;//个人编译版本说明char* m_Privatebuild;//特殊编译版说明char* m_Specialbuild;EFileINfo() {memset(this, 0, sizeof(*this));}}*PEFileINfo;static bool MyGetFileVersionInfo(char* FlieNmae, EFileINfo* pInfo) {DWORD Infosize = GetFileVersionInfoSizeA(FlieNmae, 0);bool retb = false;if (Infosize){char* pInfobuff = new char[(size_t)Infosize + 1]{ 0 };if (!pInfobuff) {return false;}if (!GetFileVersionInfoA(FlieNmae, 0, Infosize, pInfobuff)) {delete[] pInfobuff;return false;};unsigned char* pbuff = 0;unsigned int BuffLenth = 0;if (!VerQueryValueA(pInfobuff, "\\VarFileInfo\\Translation", (LPVOID*)&pbuff, &BuffLenth)) {delete[] pInfobuff;return false;};std::string languge = "080404b0";std::string languagedata;if (BuffLenth <= 0){languge = "040904E4";}else{size_t loopnum = BuffLenth >> 2;size_t i = 0;if ((signed int)(BuffLenth >> 2) > 0){DWORD* temp = (DWORD*)pbuff;char pTempbuff[256]{ 0 };do{VerLanguageNameA(*temp, pTempbuff, 256);//语言信息languagedata += pTempbuff;if (i != loopnum - 1)languagedata += ",";++i;++temp;} while (i < loopnum);}pInfo->m_Language = CloneTextData(languagedata.c_str());char* retbuff = 0;unsigned int retlenth = 0;VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\Comments").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Remarks = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\CompanyName").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_CompanyName = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\FileDescription").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Description = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\FileVersion").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Vision = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\InternalName").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_InName = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\LegalCopyright").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Copyright = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\LegalTrademarks").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Trademark = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\OriginalFilename").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Name = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\PrivateBuild").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Privatebuild = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\ProductName").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Productname = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\StringFileInfo\\" + languge + "\\ProductVersion").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Productversion = retbuff == 0 ? 0 : CloneTextData(retbuff);VerQueryValueA(pInfobuff, ("\\SpecialBuild\\" + languge + "\\ProductVersion").c_str(), (LPVOID*)&retbuff, &retlenth);pInfo->m_Specialbuild = retbuff == 0 ? 0 : CloneTextData(retbuff);retb = true;}delete[] pInfobuff;}return retb;}EAPI_EXTERN_C void eapi_GetFileVersionInfoW_16_eapi(PMDATA_INF pRetData, INT nArgCount, PMDATA_INF pArgInf){PEFileINfo pHDInfo = *(PEFileINfo*)pArgInf[1].m_pCompoundData;pRetData->m_bool = MyGetFileVersionInfo(pArgInf[0].m_pText, pHDInfo);}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。