오늘은 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;
}
* 사용법
CString ver = GetAppVersion("c:\\폴더", "aaa.exe")'
GetAppVersion 함수는 고정적으로 넣어놓고, 호출만 하면 해당 파일의 버젼이 읽히게 됩니다.
참 쉽죠~~
#dll#EXE#GetFileVersionInfo#버전#읽기
'프로그램 > C++' 카테고리의 다른 글
내 현재 폴더에 INI 파일 일고 쓰기 (0) | 2021.01.15 |
---|---|
디버깅을 위해 로그를 남길 때 사용하는 방법 (0) | 2021.01.15 |
해당위치에 파일 존재유무 체크 (0) | 2021.01.15 |
바탕화면에 단축아이콘 만들기 (각종) (1) | 2021.01.15 |
작업관리자에서 해당 프로세스가 실행중인지.. (0) | 2021.01.15 |