zoukankan      html  css  js  c++  java
  • win32 获取文件版本、描述等信息

     1 std::string GetFIleDescription(TCHAR *file_path){
     2     std::string description = "";
     3 
     4     //获取版本信息大小
     5     DWORD dwSize = GetFileVersionInfoSize(file_path, NULL);
     6     if (dwSize > 0)    {
     7         TCHAR *pBuf = new TCHAR[dwSize + 1];
     8         memset(pBuf, 0, dwSize + 1);
     9         //获取版本信息
    10         GetFileVersionInfo(file_path, NULL, dwSize, pBuf);
    11 
    12         // Read the list of languages and code pages.
    13         LPVOID lpBuffer = NULL;
    14         UINT uLen = 0;
    15 
    16         UINT nQuerySize;
    17         DWORD* pTransTable;
    18         ::VerQueryValue(pBuf, "\VarFileInfo\Translation", (void **)&pTransTable, &nQuerySize);
    19         DWORD m_dwLangCharset = MAKELONG(HIWORD(pTransTable[0]), LOWORD(pTransTable[0]));
    20 
    21         TCHAR SubBlock[50] = { 0 };
    22         sprintf_s(SubBlock, 50, "\StringFileInfo\%08lx\FileDescription", m_dwLangCharset);
    23 
    24         VerQueryValue(pBuf, SubBlock, &lpBuffer, &uLen);
    25         if (uLen) description = (TCHAR*)lpBuffer;
    26         delete[]pBuf;
    27     }
    28 
    29     return description;
    30 }

    pBuf获取倒文件里版本信息内容,然后需要通过VerQueryValue函数去取对应内容。

    18行,19行是去文件版本信息里的编码(对应文件属性详细信息的语言项),SubBlock格式化成16进制,然后加上参数去取对应内容。

    示例里SubBlock格式化时填的是"FileDescription",即获取文件属性详细信息里的描述项。

    这里可选填以下参数:

    CompanyName
    FileDescription
    FileVersion
    InternalName
    LegalCopyright
    OriginalFilename
    ProductName
    ProductVersion
    Comments
    LegalTrademarks
    PrivateBuild
    SpecialBuild

    公司名称,文件描述,文件版本等信息都可以通过该方式获取。

    注意需要导入库文件,在头文件包含后加上#pragma comment(lib, "version.lib")

  • 相关阅读:
    PHP 获取某年第几周的开始日期和结束日期的实例
    PHP科学计数法转换成数字
    laravel 辅助函数
    laravel5.3之后可以使用withCount()这个方法
    laravel 5.1 Model 属性详解
    laravel的启动过程解析
    转:按需加载html 图片 css js
    移动平台WEB前端开发技巧汇总(转)
    php重定向页面的三种方式
    zepto API参考(~~比较全面)
  • 原文地址:https://www.cnblogs.com/yzhuang/p/13754332.html
Copyright © 2011-2022 走看看