반응형
CString TestDlg::GetAppVersion(CString fileName)
{
BSTR bstrFilePath = fileName.AllocSysString();
CString strVersion = L"";
DWORD dwHdlDest;
DWORD dwSizeDest;
dwSizeDest = GetFileVersionInfoSize(
(LPWSTR)bstrFilePath, //버전을 알고자 하는 파일의 경로
&dwHdlDest);
if (dwSizeDest > 0)
{
BYTE* pDestData = new BYTE[dwSizeDest + 1];
if (GetFileVersionInfo(
(LPWSTR)bstrFilePath, //버전을 알고자 하는 파일의 경로
dwHdlDest,
dwSizeDest,
pDestData))
{
VS_FIXEDFILEINFO * pvsInfo;
UINT uLen;
if (VerQueryValue(pDestData, _T("\\"), (void**)&pvsInfo, &uLen))
{
strVersion.Format(L"%d.%d.%d.%d", (pvsInfo->dwFileVersionMS / 65536),
(pvsInfo->dwFileVersionMS % 65536), (pvsInfo->dwFileVersionLS / 65536),
(pvsInfo->dwFileVersionLS % 65536));
}
}
delete [] pDestData;
}
SysFreeString(bstrFilePath);
return strVersion;
}
{
BSTR bstrFilePath = fileName.AllocSysString();
CString strVersion = L"";
DWORD dwHdlDest;
DWORD dwSizeDest;
dwSizeDest = GetFileVersionInfoSize(
(LPWSTR)bstrFilePath, //버전을 알고자 하는 파일의 경로
&dwHdlDest);
if (dwSizeDest > 0)
{
BYTE* pDestData = new BYTE[dwSizeDest + 1];
if (GetFileVersionInfo(
(LPWSTR)bstrFilePath, //버전을 알고자 하는 파일의 경로
dwHdlDest,
dwSizeDest,
pDestData))
{
VS_FIXEDFILEINFO * pvsInfo;
UINT uLen;
if (VerQueryValue(pDestData, _T("\\"), (void**)&pvsInfo, &uLen))
{
strVersion.Format(L"%d.%d.%d.%d", (pvsInfo->dwFileVersionMS / 65536),
(pvsInfo->dwFileVersionMS % 65536), (pvsInfo->dwFileVersionLS / 65536),
(pvsInfo->dwFileVersionLS % 65536));
}
}
delete [] pDestData;
}
SysFreeString(bstrFilePath);
return strVersion;
}
반응형
'C & C++ > C & C++' 카테고리의 다른 글
Windows Object와 Handle이란? (0) | 2011.10.25 |
---|---|
CFileFind 를 이용하여 디렉토리 안의 파일 찾기 (0) | 2011.10.25 |
유니코드 <--> 멀티 바이트 변환 (0) | 2011.10.25 |
파일 다이얼로그에서 단일 * 다중선택 (0) | 2011.10.25 |
여러 페이지 인쇄하기 (0) | 2011.10.25 |
댓글