// Windows 유닛의 'GetFileVersionInfo'함수로 일반적으로 파일의 버전을 구하지만
// C:\windows\system32 폴더 안에 보면 'advpack.dll'파일이 있습니다.
// 그중 GetVersionFromFile이라는 함수가 있는데 그 함수로도 파일의 버전을 구하실수가 있습니다.
 
// DLL 함수 호출 인자는 다음과 같습니다.
// DLL의 함수를 먼저 선언합니다.
        function GetVersionFromFile(lpszFilename : String;
                            var pwMSVer : LongInt;
                            var pwLSVer : LongInt;
                            bVersion : LongInt): LongInt; stdcall; external 'c:\windows\system32\advpack.dll';
 
procedure TForm1.Button1Click(Sender: TObject);
const
        VER_MAX = $10000;
        TEST_FILE = 'C:\windows\system32\notepad.exe';        // 샘플은 메모장 // 
var
        pwMSVer : LongInt;
        pwMShVer, pwMSlVer : Integer;
        pwLSVer : LongInt;
        pwLShVer, pwLSlVer : Integer;
        PwVersion : String;
begin
        pwMSVer := 0;
        pwLSVer := 0;

        // advpack.dll에 GetVerionFromFile 함수 호출
        GetVersionFromFile(TEST_FILE, pwMSVer, pwLSVer, 1);
    
        // MSh값과 MSl값 구하기
        pwMShVer := pwMSVer div VER_MAX;
        pwMSlVer := pwMSVer mod VER_MAX;

        // LSh값과 LSl값 구하기
        pwLShVer := pwLSVer div VER_MAX;
        pwLSlVer := pwLSVer mod VER_MAX;

        // 일반 버전 양식으로 변경
        pwVersion := IntToStr(pwMShVer) + '.' + IntToStr(pwMSlVer) + '.' + 
                            IntToStr(pwLShVer) + '.' + IntToStr(pwLSlVer);

        // 버전 출력
        ShowMessage(pwVersion);
end;
 
// 사실그냥 Windows 유닛에 있는 GetFileVersionInfo 쓰면 되기때문에 쓸일은 없을 것 같습니다.
//
//  이상으로 과니의 많이 쓸일 없는 팁였습니다. ㅋ