获得文件属性

来源:互联网 发布:齐鲁商品软件下载 编辑:程序博客网 时间:2024/04/29 09:28
#include "string"using namespace std;typedef struct stFilePro {wstring strComments;wstring strProductName;wstring strInternalName;wstring strProductVersion;wstring strSpecialBuild;}STFILEPRO, *pSTFILEPRO;BOOL GetFileProperty(wchar_t* wcFilPath, STFILEPRO& stFilePro){//Language code struct.struct LANGANDCODEPAGE {WORD wLanguage;WORD wCodePage;} *TranslationPtr;DWORD    dwSize     = 0;BOOL     bRet       = TRUE;BOOL     bTmpRet    = FALSE;UINT     uInfoSize  = 0;LPVOID   infoPtr    = NULL;wchar_t* pVerInfo   = NULL;//Get version info size.dwSize = GetFileVersionInfoSize(wcFilPath, NULL);LPVOID pInfoData = malloc(dwSize);if ( dwSize > 0 ){//Get Version info.bTmpRet = GetFileVersionInfo(wcFilPath, NULL, dwSize, pInfoData);if ( bTmpRet ){//Get language code.bTmpRet = VerQueryValue(pInfoData, L"\\VarFileInfo\\Translation", (LPVOID*)&TranslationPtr, &uInfoSize);if ( bTmpRet ){wchar_t wcCommentsInfo[100]         = {0};wchar_t wcProductNameInfo[100]      = {0};wchar_t wcProductVersionInfo[100]   = {0};wchar_t wcInternalNameInfo[100]     = {0};wchar_t wcSpecialBuildInfo[100]     = {0};//Format string.wsprintf(wcProductNameInfo,  L"\\StringFileInfo\\%04x%04x\\ProductName",TranslationPtr[0].wLanguage, TranslationPtr[0].wCodePage);wsprintf(wcProductVersionInfo, L"\\StringFileInfo\\%04x%04x\\ProductVersion",TranslationPtr[0].wLanguage, TranslationPtr[0].wCodePage);wsprintf(wcInternalNameInfo, L"\\StringFileInfo\\%04x%04x\\InternalName",TranslationPtr[0].wLanguage, TranslationPtr[0].wCodePage);wsprintf(wcCommentsInfo,         L"\\StringFileInfo\\%04x%04x\\Comments",TranslationPtr[0].wLanguage, TranslationPtr[0].wCodePage);wsprintf(wcSpecialBuildInfo, L"\\StringFileInfo\\%04x%04x\\SpecialBuild",TranslationPtr[0].wLanguage, TranslationPtr[0].wCodePage);//Get comments.bTmpRet = VerQueryValue(pInfoData, wcCommentsInfo, (LPVOID*)&infoPtr, &uInfoSize);if ( !bTmpRet ){//bRet = FALSE;}else{pVerInfo = (wchar_t*)infoPtr;stFilePro.strComments = pVerInfo;infoPtr = NULL;}//Get internalname.bTmpRet = VerQueryValue(pInfoData, wcInternalNameInfo, (LPVOID*)&infoPtr, &uInfoSize);if ( !bTmpRet ){//bRet = FALSE;}else{pVerInfo = (wchar_t*)infoPtr;stFilePro.strInternalName = pVerInfo;infoPtr = NULL;}//Get productname.bTmpRet = VerQueryValue(pInfoData, wcProductNameInfo, (LPVOID*)&infoPtr, &uInfoSize);if ( !bTmpRet ){//bRet = FALSE;}else{pVerInfo = (wchar_t*)infoPtr;stFilePro.strProductName = pVerInfo;infoPtr = NULL;}//Get productversion.bTmpRet = VerQueryValue(pInfoData, wcProductVersionInfo, (LPVOID*)&infoPtr, &uInfoSize);if ( !bTmpRet ){//bRet = FALSE;}else{pVerInfo = (wchar_t*)infoPtr;stFilePro.strProductVersion = pVerInfo;infoPtr = NULL;}//Get specialbuild.bTmpRet = VerQueryValue(pInfoData, wcSpecialBuildInfo, (LPVOID*)&infoPtr, &uInfoSize);if ( !bTmpRet ){//bRet = FALSE;}else{pVerInfo = (wchar_t*)infoPtr;stFilePro.strSpecialBuild = pVerInfo;infoPtr = NULL;}}else{bRet = FALSE;}}else{bRet = FALSE;}}else{bRet = FALSE;}free(pInfoData);pInfoData = NULL;return bRet;}

0 0
原创粉丝点击