파일 버전 읽기
// 버전 체크
// 함수1 : 자기 자신의 버전을 읽어서 ptr 에 복사한다. ptr ~ ptr+7 사용
BOOL GetMyVersion(LPBYTE ptr)
{
CString filename;
filename = __argv[0]; // 자기 자신의 파일 이름 읽기
VS_FIXEDFILEINFO *fileinfo=NULL, easy; // 쿼리 함수에서 할당해 준다.. 포인터의 포인터를 넘긴다!!
DWORD dwHandle, dwVersionInfoSize = GetFileVersionInfoSize(filename, &dwHandle);
// 전체 버전 정보 받을라꼬!
_ASSERTE(dwVersionInfoSize != 0);
if(dwVersionInfoSize == 0)
return FALSE;
LPBYTE lpBuffer = new BYTE [dwVersionInfoSize];
BOOL bStatus = GetFileVersionInfo(filename, /* Ignored */dwHandle, dwVersionInfoSize, lpBuffer);
if(!bStatus) // 데이터 받아오고...
{
delete lpBuffer;
return FALSE;
}
UINT uLength;
bStatus = VerQueryValue(lpBuffer, TEXT("\"), (LPVOID*)&fileinfo, &uLength);
if(bStatus)
{
TRACE("%d %d %xn", /* major */HIWORD(fileinfo->dwFileVersionMS), /* MINOR */ LOWORD(fileinfo->dwFileVersionMS), fileinfo->dwFileVersionLS);
memcpy(ptr, &fileinfo->dwFileVersionMS, sizeof(DWORD));
memcpy(ptr + sizeof(DWORD) , &fileinfo->dwFileVersionLS, sizeof(DWORD));
delete lpBuffer;
return TRUE;
}
delete lpBuffer;
return FALSE;
}
ex)
BOOL bStatus = GetMyVersion(tmpBuffer + 50);
// 버전 체크
// 함수1 : 자기 자신의 버전을 읽어서 ptr 에 복사한다. ptr ~ ptr+7 사용
BOOL GetMyVersion(LPBYTE ptr)
{
CString filename;
filename = __argv[0]; // 자기 자신의 파일 이름 읽기
VS_FIXEDFILEINFO *fileinfo=NULL, easy; // 쿼리 함수에서 할당해 준다.. 포인터의 포인터를 넘긴다!!
DWORD dwHandle, dwVersionInfoSize = GetFileVersionInfoSize(filename, &dwHandle);
// 전체 버전 정보 받을라꼬!
_ASSERTE(dwVersionInfoSize != 0);
if(dwVersionInfoSize == 0)
return FALSE;
LPBYTE lpBuffer = new BYTE [dwVersionInfoSize];
BOOL bStatus = GetFileVersionInfo(filename, /* Ignored */dwHandle, dwVersionInfoSize, lpBuffer);
if(!bStatus) // 데이터 받아오고...
{
delete lpBuffer;
return FALSE;
}
UINT uLength;
bStatus = VerQueryValue(lpBuffer, TEXT("\"), (LPVOID*)&fileinfo, &uLength);
if(bStatus)
{
TRACE("%d %d %xn", /* major */HIWORD(fileinfo->dwFileVersionMS), /* MINOR */ LOWORD(fileinfo->dwFileVersionMS), fileinfo->dwFileVersionLS);
memcpy(ptr, &fileinfo->dwFileVersionMS, sizeof(DWORD));
memcpy(ptr + sizeof(DWORD) , &fileinfo->dwFileVersionLS, sizeof(DWORD));
delete lpBuffer;
return TRUE;
}
delete lpBuffer;
return FALSE;
}
ex)
BOOL bStatus = GetMyVersion(tmpBuffer + 50);
반응형