C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[216] 실행파일 자신의 크기 알아내기
하늘마루 [comser] 8144 읽음    2001-11-21 22:07
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;
}

+ -

관련 글 리스트
216 실행파일 자신의 크기 알아내기 하늘마루 8144 2001/11/21
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.