现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

从exe中读取版本信息

2013-12-18 06:32 工业·编程 ⁄ 共 963字 ⁄ 字号 暂无评论

HRESULT CAboutDlg::GetVersion(__out CString& strVersion) 

    strVersion = _T("版本未知"); 
    TCHAR szFileName[MAX_PATH] = {0}; 
    GetModuleFileName(NULL, szFileName, MAX_PATH); 
     
    DWORD dwSize = GetFileVersionInfoSize(szFileName, NULL); 
    if(dwSize == 0) 
        return E_FAIL; 
 
    TCHAR* pszVersionInfo = new TCHAR[dwSize]; 
    ZeroMemory(pszVersionInfo, dwSize); 
    BOOL bRet = GetFileVersionInfo(szFileName, 0, dwSize, pszVersionInfo); 
    if(!bRet) 
    { 
        delete [] pszVersionInfo; 
        return E_FAIL; 
    } 
 
    VS_FIXEDFILEINFO *pFileInfo = NULL; 
    UINT pLenFileInfo = 0; 
    bRet = VerQueryValue(pszVersionInfo, _T("\\"), (LPVOID*)&pFileInfo, &pLenFileInfo); 
    if(!bRet) 
    { 
        delete [] pszVersionInfo; 
        return E_FAIL; 
    } 
 
    strVersion.Format(_T("%d.%d.%d.%d"), 
        HIWORD(pFileInfo->dwFileVersionMS), 
        LOWORD(pFileInfo->dwFileVersionMS), 
        HIWORD(pFileInfo->dwFileVersionLS), 
        LOWORD(pFileInfo->dwFileVersionLS)); 
 
    delete [] pszVersionInfo; 
 
    return S_OK; 
}

给我留言

留言无头像?