Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 19 additions & 3 deletions FarHints/FarHintsVerInfo/FarHintsVerInfoMain.pas
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ TPluginObject = class(TInterfacedObject, IHintPlugin)
vCP :^LANGANDCODEPAGE;
vPtr, vEnd :PWideChar;
begin
{ ���� �������������, ������ ��� ������ Translation �� ��������� � StringInfo }
{ Ищем сканированием, потому что иногда Translation не совпадает с StringInfo }
vPtr := vBuf;
vEnd := vBuf + (vSize div SizeOf(WideChar)) - Length(cStrInfo) - 4 - 8;
while vPtr < vEnd do begin
Expand All @@ -111,7 +111,7 @@ TPluginObject = class(TInterfacedObject, IHintPlugin)
Inc(vPtr);
end;

{ �� ����� ������������� (�������� 16-�� ��������� ���������), ��������� ����� Translation}
{ Не нашли сканированием (возможно 16-ти разрядная программа), попробуем через Translation}
if VerQueryValue(vBuf, '\VarFileInfo\Translation', Pointer(vCP), vLen) then
vLang := FAPI.Format('%.4x%.4x', [vCP.wLanguage, vCP.wCodePage]);
end;
Expand All @@ -127,9 +127,21 @@ TPluginObject = class(TInterfacedObject, IHintPlugin)
AItem.AddStringInfo(APrompt, vStr);
end;

procedure VerAdd(const APrompt: WideString; const MS, LS: DWORD);
begin
if (MS or LS) <> 0 then
AItem.AddStringInfo(APrompt,
FAPI.Format('%d.%d.%d.%d', [HiWord(MS), LoWord(MS), HiWord(LS), Loword(LS)]));
end;

type
PFFI = ^TVSFixedFileInfo;

var
vName :TString;
vTemp :DWORD;
vFixIn: PFFI;
vFixLen: UINT;
begin
Result := False;
vName := AItem.FullName;
Expand All @@ -142,10 +154,14 @@ TPluginObject = class(TInterfacedObject, IHintPlugin)

AItem.AddStringInfo(GetMsg(strName), AItem.Name);

if VerQueryValue(vBuf, '\', Pointer(vFixIn), vFixLen) then
with vFixIn^ do
VerAdd(GetMsg(strVersion), dwFileVersionMS, dwFileVersionLS);

if vLang <> '' then begin
LocAdd(GetMsg(strDescription), 'FileDescription');
LocAdd(GetMsg(strCopyright), 'LegalCopyright');
LocAdd(GetMsg(strVersion), 'FileVersion');
// LocAdd(GetMsg(strVersion), 'FileVersion');
// LocAdd('CompanyName');
// LocAdd('OriginalFilename');
// LocAdd('InternalName');
Expand Down