• win32


    比如:

    Google Chrome:

    类似于任务管理器中显示名字,见下图

    那么我们就需要使用VerQueryValue, 

    从指定的版本信息资源中检索指定的版本信息。若要检索适当的资源,在调用VerQueryValue之前,必须首先调用GetFileVersionInfoSize函数,然后再调用GetFileVersionInfo函数

    代码示例:

    #include <Windows.h>
    #include <iostream>
    #include <strsafe.h>
    
    #pragma comment(lib,"Version.lib")
    struct LANGANDCODEPAGE {
        WORD wLanguage;
        WORD wCodePage;
    } *lpTranslate;
    
    int main()
    {   
        HANDLE handle = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, FALSE, appid);   
        wchar_t pszFile[MAX_PATH] = L"";
        DWORD len = MAX_PATH;
        if (handle) QueryFullProcessImageName(handle, 0, pszFile, &len);
        UINT dwBytes, cbTranslate;
        DWORD dwSize = GetFileVersionInfoSize(pszFile, (DWORD*)&dwBytes);
        if (dwSize == 0)
        {
            int err = GetLastError();
            return 0;
        }
        LPVOID lpData = (LPVOID)malloc(dwSize);
        ZeroMemory(lpData, dwSize);
        if (GetFileVersionInfo(pszFile, 0, dwSize, lpData))
        {
            VerQueryValue(lpData,
                L"\VarFileInfo\Translation",
                (LPVOID*)&lpTranslate,
                &cbTranslate);
            wchar_t strSubBlock[MAX_PATH] = { 0 };
            wchar_t* lpBuffer;
    
            for (int i = 0; i < (cbTranslate / sizeof(struct LANGANDCODEPAGE)); i++)
            {
                StringCchPrintf(strSubBlock, 50,
                    L"\StringFileInfo\%04x%04x\FileDescription",
                    lpTranslate[i].wLanguage,
                    lpTranslate[i].wCodePage);
                VerQueryValue(lpData,
                    strSubBlock,
                    (void**)&lpBuffer,
                    &dwBytes);
                std::wcout << lpBuffer << std::endl;
            }
        }
        if (lpData) free(lpData);
        if (handle) CloseHandle(handle);
        return 0;
    }

     Note: 这对普通的win32窗口包括控制台似乎不起作用

  • 相关阅读:
    cocos3.2触摸事件接收顺序
    触摸点是否在按钮矩形内
    scrollview里container拖动显示问题
    cocos2dx 显示对象尺寸
    allocating an object of abstract class
    学习scorllview
    cocos2dx引用计数
    addchild 报错不能添加nil
    有用的宏
    一段SQL
  • 原文地址:https://www.cnblogs.com/strive-sun/p/13809457.html
Copyright © 2020-2023  润新知