发新话题
打印

Delphi 获取DLL文件中的版本信息

Delphi 获取DLL文件中的版本信息

delphi 获取DLL文件中的版本信息
我想用DELPHI编程加载一个可执行程序(EXE格式)或者库文件(DLL格式)
显示这个文件中所有信息如下图所示:

附件

TESTOEM图片信息.jpg (44.49 KB)

2010-10-22 15:09

TESTOEM图片信息.jpg

努力学习,加强科技新技能

TOP

就是这些信息:
版本:
描述:
版权:
备注:
产品版本:
................................................就这些信息》》》》》》》》》》》》》》》
努力学习,加强科技新技能

TOP

GetFileVersionInfo这个API可以完成你的要求

var
    InfoSize , Zero : DWORD;
    VersionInfo ,Info : Pointer;
    Translation: PLANGANDCODEPAGE;
    InfoPath : String;
begin
    InfoSize := GetFileVersionInfoSize(PChar(NamePath),Zero);
    if InfoSize = 0 then begin
        Exit;
    end;
    GetMem(VersionInfo,InfoSize);
    try
        if Not GetFileVersionInfo(PChar(NamePath),0,InfoSize,VersionInfo) then begin
            Exit;
        end;
        if VerQueryValue(VersionInfo, '\VarFileInfo\Translation ', Pointer(Translation), InfoSize) then
        begin
            InfoPath := '\StringFileInfo\ ' + inttoHex(Translation^.wLanguage, 4) + inttoHex(Translation^.wCodePage, 4) + '\ ';
            GetMem(Info, 2000);
            VerLanguageName(Translation^.wLanguage, Info, 2000);
        end
        else begin//set default value

            InfoPath := '\StringFileInfo\040904E4\ ';
        end;

        if VerQueryValue(VersionInfo, PChar(InfoPath + 'ProductVersion '), Info, InfoSize) then
            S1 := string(PChar(Info)); //版本;

        if VerQueryValue(VersionInfo, PChar(InfoPath + 'CompanyName '), Info, InfoSize) then
            S2 := string(PChar(Info)); //厂商;

        if VerQueryValue(VersionInfo, PChar(InfoPath + 'LegalTrademarks '), Info, InfoSize) then
            S3 := string(PChar(Info)); //

        if VerQueryValue(VersionInfo, PChar(InfoPath + 'FileDescription '), Info, InfoSize) then
            S4 := string(PChar(Info)); //描述;

    finally
        FreeMem(VersionInfo, InfoSize);
    end;
end;
换个头像,看见广告就眼红,直接封ID。

TOP

不行,不能运行,提示:
Translation: PLANGANDCODEPAGE;
努力学习,加强科技新技能

TOP

发新话题