zoukankan      html  css  js  c++  java
  • WIN32 API 获取文件版本信息

    CString strVersion;
    CString strPath(_T("xxxxxxxx.exe"));
    // 读文件信息
    DWORD dwVerHnd = 0;
    DWORD dwVerInfoSize = ::GetFileVersionInfoSize(strPath, &dwVerHnd);

    if (dwVerInfoSize)
    {
    // If we were able to get the information, process it:
    HANDLE hMem;
    LPVOID lpvMem;
    unsigned int uInfoSize = 0;
    VS_FIXEDFILEINFO * pFileInfo;

    hMem = ::GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);
    lpvMem = ::GlobalLock(hMem);
    ::GetFileVersionInfo(strPath, dwVerHnd, dwVerInfoSize, lpvMem);

    struct LANGANDCODEPAGE {
    WORD wLanguage;
    WORD wCodePage;
    } *lpTranslate;

    // Read the list of languages and code pages.
    UINT cbTranslate = sizeof(LANGANDCODEPAGE);
    VerQueryValue(lpvMem,
    TEXT("\VarFileInfo\Translation"),
    (LPVOID*)&lpTranslate,
    &cbTranslate);

    CString strSubBlock;
    strSubBlock.Format(_T("\StringFileInfo\%04x%04x\FileDescription"),
    lpTranslate->wLanguage, lpTranslate->wCodePage);

    char *buffer = NULL;
    UINT nSize = 0;
    VerQueryValue(lpvMem, strSubBlock, (LPVOID*)&buffer, &nSize);

    ::GlobalUnlock(hMem);
    ::GlobalFree(hMem);
    }

  • 相关阅读:
    原型与原型链
    数据类型与计算
    JavaScript实现版本号比较
    vue依赖
    vue
    面试经验
    第十一节课 课堂总结
    第十一次作业
    第十课课堂总结
    第十次作业
  • 原文地址:https://www.cnblogs.com/jackieron/p/7146335.html
Copyright © 2011-2022 走看看