开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 4

AlongsCode/eapi

forked from 精易科技/eapi
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
eapi
/
cppCode
/
eapi_16_GetFileVersionInfoW.cpp
eapi
/
cppCode
/
eapi_16_GetFileVersionInfoW.cpp
eapi_16_GetFileVersionInfoW.cpp 4.13 KB
一键复制 编辑 原始数据 按行查看 历史
AlongsCode 提交于 2023年02月04日 02:57 +08:00 . 重构
#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);
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

易语言支持库 - 应用接口支持库 欢迎易友fork提交代码完成支持库重构改造。
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C++
1
https://gitee.com/alongscode/eapi.git
git@gitee.com:alongscode/eapi.git
alongscode
eapi
eapi
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /