### 파일 버젼 얻어 오기
Link Version.lib
#include <Winver.h>
#include <Windows.h>
CString CTestDlg::GetFileVersion(CString strPath)
{
DWORD dwSize = GetFileVersionInfoSize( strPath , 0 );
char * buffer = new char[dwSize];
memset( buffer, 0, dwSize);
GetFileVersionInfo( strPath, 0, dwSize, buffer);
//FileVersion : 파일 버젼
//InternalName : 내부 이름
//LegalTrademarks : 등록 상표
//OriginalFilename : 원본 파일 이름
//ProductVersion : 제품 버전
//ProductName : 제품 이름
//CompanyName : 회사이름
struct LANGANDCODEPAGE {
WORD wLanguage;
WORD wCodePage;
} *lpTranslate;
UINT cbTranslate;
UINT dwBytes;
LPBYTE lpBuffer;
VerQueryValue(buffer,
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&cbTranslate);
CString strSub;
strSub.Format("\\StringFileInfo\\%04x%04x\\FileVersion",
lpTranslate[0].wLanguage,
lpTranslate[0].wCodePage);
VerQueryValue(buffer,
(LPTSTR)(LPCTSTR)strSub,
(LPVOID*)&lpBuffer,
&dwBytes);
if(dwBytes<=0)
{
if(buffer)
delete [] buffer;
return NULL;
}
CString strReturn = _T("");
strReturn = (CString)lpBuffer;
delete [] buffer;
return strReturn;
return "";
}
TEXT("\\VarFileInfo\\Translation"),
(LPVOID*)&lpTranslate,
&cbTranslate);
CString strSub;
strSub.Format("\\StringFileInfo\\%04x%04x\\ProductVersion",
lpTranslate[0].wLanguage,
lpTranslate[0].wCodePage);
VerQueryValue(buffer,
(LPTSTR)(LPCTSTR)strSub,
(LPVOID*)&lpBuffer,
&dwBytes);
// 여기서 dwBytes 가 0 이라면 lpBuffer 는 trash 이므로 error 처리 필요
CString strReturn = lpBuffer;
delete [] buffer;
return strReturn;
}
'■ 프로그래밍, 개발' 카테고리의 다른 글
운영체제 - 디스크 스케쥴링 (0) | 2014.01.31 |
---|---|
# 자동으로 빌드 버젼 읽어 오기 (0) | 2014.01.31 |
문자열 변환 [아스키 유니코드] ASCII <-> UNICODE (0) | 2014.01.31 |
리스트 박스안에 긴 화일명 넣기 (0) | 2014.01.31 |
ActiveX 컨트롤로부터 URL 알아내기 (0) | 2014.01.31 |
댓글