//--------------------------------------------------------------------------- // << Version String >> // {"CompanyName", "FileDescription", "FileVersion", "InternalName" // , "LegalCopyright", "LegalTradeMarks", "OriginalFileName", "ProductName", "ProductVersion", "Comments"}; //---------------------------------------------------------------------------- // --------------------------------------------------------------------------- AnsiString __fastcall GetFileVersionInfo(AnsiString filename) { AnsiString sFileVersion; // Return 될 Version 정보. DWORD dwHandle = 0, dwVersionInfoSize; UINT uLength; LPVOID pFileInfo, ptr; dwVersionInfoSize = GetFileVersionInfoSize(filename.c_str(), &dwHandle); if (dwVersionInfoSize < 2) return "0.0.0"; // 실행화일에 버젼 정보 표시가 되어 있지 않을 경우 pFileInfo = (LPVOID)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwVersionInfoSize); GetFileVersionInfo(filename.c_str(), dwHandle, dwVersionInfoSize, pFileInfo); VerQueryValue(pFileInfo, TEXT("\\VarFileInfo\\Translation"), &ptr, &uLength); WORD *id = (WORD*)ptr; AnsiString szString = "\\StringFileInfo\\" + IntToHex(id[0], 4) + IntToHex(id[1], 4) + "\\FileVersion"; VerQueryValue(pFileInfo, szString.c_str(), &ptr, &uLength); sFileVersion = (char*)ptr; HeapFree(GetProcessHeap(), 0, pFileInfo); return sFileVersion; } // --------------------------------------------------------------------------- //사용예 void __fastcall TF_Main::FormCreate(TObject *Sender) { L_AppVer->Caption="Version"+ GetFileVersionInfo(ExtractFileName(ParamStr(0))); //실행파일 버젼 L_XVisionVer->Caption="XVison " + GetFileVersionInfo("XVision140.bpl"); //특정 모듈 버젼 } // --------------------------------------------------------------------------- |
'코드 조각' 카테고리의 다른 글
프로그램 내에서 특정 모듈(dll 또는 bpl)의 경로를 알고 싶으면? (0) | 2012.03.30 |
---|---|
ShellExecute() : 파일 실행하기 (2) | 2012.03.29 |
TStringGrid 내용을 CSV 파일로 저장하는 함수 (0) | 2012.03.21 |
TPanel에는 Canvas가 왜 없을까? (1) | 2012.03.20 |
WM_SYSCOMMAND (0) | 2012.03.15 |