掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
複数の言語で設定されたexeファイルのバージョン情報を取得するには? (ID:18111)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
参考までに function GetFileVersionCountry(const FileName:string): string; type PDWORD = ^DWORD; PLangAndCodePage = ^TLangAndCodePage; TLangAndCodePage = packed record wLanguage: WORD; wCodePage: WORD; end; PLangAndCodePageArray = ^TLangAndCodePageArray; TLangAndCodePageArray = array[0..0] of TLangAndCodePage; var loc_InfoBufSize: DWORD; loc_InfoBuf: PChar; loc_VerBufSize: DWORD; loc_VerBuf: PChar; cbTranslate: DWORD; lpTranslate: PDWORD; i: DWORD; str,str2:string; begin Result := ''; if (Length(FileName) = 0) or (not Fileexists(FileName)) then Exit; loc_InfoBufSize := GetFileVersionInfoSize(PChar(FileName), loc_InfoBufSize); if loc_InfoBufSize > 0 then begin loc_VerBuf := nil; loc_InfoBuf := AllocMem(loc_InfoBufSize); try if not GetFileVersionInfo(PChar(FileName), 0, loc_InfoBufSize, loc_InfoBuf) then exit; if not VerQueryValue(loc_InfoBuf, '\VarFileInfo\Translation', Pointer(lpTranslate), DWORD(cbTranslate)) then exit; str2:=''; for i := 0 to (cbTranslate div SizeOf(TLangAndCodePage)) - 1 do begin str:= Format( '%4.4x%4.4x', [PLangAndCodePageArray(lpTranslate)[i].wLanguage, PLangAndCodePageArray(lpTranslate)[i].wCodePage]); str2 := str + #13#10 + str2; end; Result:=str2; finally FreeMem(loc_InfoBuf, loc_InfoBufSize); end; end; end;
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.