오늘은 exe파일이나 dll, ocx 등의 파일 버젼을 읽을 필요가 있게 됩니다.
그때 읽는 함수를 알려드리겠습니다. 현재 제가 사용하고 있는 소스입니다.
* 소스코드
// CString parm_path : 파일경로
// CString parm_filename : 파일명.확장자
CString Util::GetAppVersion( CString parm_path, CString parm_filename )
{
DWORD dwHandle, dwLen;
UINT BufLen;
LPTSTR lpData;
VS_FIXEDFILEINFO *pFileInfo;
CString pgm_path, ret_version;
pgm_path.Format("%s\\%s", parm_path, parm_filename);
dwLen = GetFileVersionInfoSize( (char *)(const char *)pgm_path, &dwHandle );
if (!dwLen) return "";
lpData = (LPTSTR) malloc (dwLen);
if (!lpData) return "";
if( !GetFileVersionInfo( (char *)(const char *)pgm_path, dwHandle, dwLen, lpData ) ) {
free (lpData);
return "";
}
if( VerQueryValue( lpData, "\\\\", (LPVOID*) &pFileInfo, (PUINT)&BufLen ) ) {
ret_version.Format("%d.%d.%d.%d",
HIWORD(pFileInfo->dwFileVersionMS), LOWORD(pFileInfo->dwFileVersionMS), HIWORD(pFileInfo->dwFileVersionLS), LOWORD(pFileInfo->dwFileVersionLS)
);
//*MajorVersion = HIWORD(pFileInfo->dwFileVersionMS);
//*MinorVersion = LOWORD(pFileInfo->dwFileVersionMS);
//*BuildNumber = HIWORD(pFileInfo->dwFileVersionLS);
//*RevisionNumber = LOWORD(pFileInfo->dwFileVersionLS);
free (lpData);
return ret_version;
}
free (lpData);
m_debug_str.Format("[GetAppVersion] %s %s %s", parm_path, parm_filename, ret_version); AddLog(m_debug_str);
return ret_version;
}
'프로그램 > C++' 카테고리의 다른 글
바탕화면에 단축아이콘 만들기 (각종) (0) | 2016.09.28 |
---|---|
해당위치에 파일 존재유무 체크 (0) | 2016.09.28 |
디버깅을 위해 로그를 남길 때 사용하는 방법 (0) | 2016.09.28 |
[자작프로그램] 유튜브영상을 편하게 보자.. 유튜브서치(YouTubeSearch) (1) | 2016.09.27 |
[자작프로그램] 플래시게임을 자유롭게~ 플가 (Flga) (0) | 2016.09.27 |