http://www.undu.com/Articles/010119d.html
에 있는 델파이 코드를 빌더로 옮겼습니다.
unsigned GetExeSize(void) // 파일 크기를 바이트 단위로 돌려줌
{
char *p;
int i, iNumSections;
unsigned Result = 0; // if error then Result = 0
const IMAGE_PE_SIGNATURE = 0x00004550;
p = (char *)HInstance;
if (PImageDosHeader(p)->e_magic != IMAGE_DOS_SIGNATURE)
return Result;
p += PImageDosHeader(p)->_lfanew;
if ( *(PDWORD(p)) != IMAGE_PE_SIGNATURE )
return Result; // Win32 PE files only
p += sizeof(DWORD);
iNumSections = PImageFileHeader(p)->NumberOfSections;
p += sizeof(TImageFileHeader) + sizeof(TImageOptionalHeader);
for (i = 1; i <= iNumSections; i++)
{
if (PImageSectionHeader(p)->PointerToRawData +
PImageSectionHeader(p)->SizeOfRawData > Result)
Result = PImageSectionHeader(p)->PointerToRawData + PImageSectionHeader(p)->SizeOfRawData;
p += sizeof(TImageSectionHeader);
}
return Result;
}
|