zoukankan      html  css  js  c++  java
  • 从rc文件访问字符串

    .rc文件,其中包含用于exe文件详细信息的版本,说明等。

    如何获得在代码内使用的值?例如,要获取ProductName

    IDI_ICON1   ICON    DISCARDABLE "abc-logo.ico"
    
    #if defined(UNDER_CE)
    #include <winbase.h>
    #else
    #include <winver.h>
    #endif
    
    VS_VERSION_INFO VERSIONINFO
    FILEVERSION 9, 9, 9, 9
    PRODUCTVERSION 12, 01, 15, 1
    FILEFLAGSMASK 0x3fL
    FILEFLAGS 0
    FILEOS VOS_NT_WINDOWS32
    FILETYPE VFT_APP
    FILESUBTYPE VFT2_UNKNOWN
    
    BEGIN
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x0404, 1200
        END
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040404b0"
            BEGIN
                VALUE "CompanyName", "Company A"
                VALUE "FileDescription", "Software A"
                VALUE "FileVersion", "1.0.0.0"
                VALUE "InternalName", "SoftwareX"
                VALUE "LegalCopyright", "Copyright (C) Software Inc. All Rights Reserved"
                VALUE "OriginalFilename", "SoftwareA.exe"
                VALUE "ProductName", "Software A"
                VALUE "ProductVersion", "1.1.0.0"
            END
        END
    END

    需要使用GetFileVersionInfo()VerQueryValue()函数

    例如:

    TCHAR FileName[MAX_PATH];
    GetModuleFileName(NULL, FileName, MAX_PATH);
    
    DWORD Handle;
    DWORD Size = GetFileVersionInfoSize(FileName, &Handle);
    
    std::vector<BYTE> Data(Size);
    GetFileVersionInfo(FileName, Handle, Size, Data.data());
    
    LPTSTR ProductName;
    UINT Len;
    VerQueryValue(Data.data(), TEXT("\StringFileInfo\040404b0\ProductName"), (LPVOID*) &ProductName, &Len);
    
    // use ProductName up to Len chars as needed...
    
    LPTSTR LegalCopyright;
    VerQueryValue(Data.data(), TEXT("\StringFileInfo\040404b0\LegalCopyright"), (LPVOID*) &LegalCopyright, &Len);
    
    // use LegalCopyright up to Len chars as needed...
  • 相关阅读:
    Leetcode No.121
    Leetcode No.97 ***
    (描述需要改进) Leetcode No.71 **
    (描述需要改进)Leetcode No.68 **
    Leetcode No.72 ***
    【笔记】存储位置/修改表/字符集.【3(完结创建表)】
    redis 事件驱动模型解析
    redis 官网文档学习笔记 简单翻译
    redis 官网文档 sentinel 简单翻译 && 简单总结QA
    redis 学习笔记 总
  • 原文地址:https://www.cnblogs.com/strive-sun/p/11850339.html
Copyright © 2011-2022 走看看