| Jokerjar79 
 
  
 Advanced Member
 | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору xy, я пользуюсь бесплатной Turbo Delphi
   
 В общем, вот решение моей проблемы:
 
 
 Код:
 | function GetFileDescription(FileName: string): string; var
 szName: array[0..255] of Char;
 P: Pointer;
 Value: Pointer;
 Len: UINT;
 GetTranslationString:string;
 FFileName: PChar;
 FValid:boolean;
 FSize: DWORD;
 FHandle: DWORD;
 FBuffer: PChar;
 begin
 try
 FFileName := StrPCopy(StrAlloc(Length(FileName) + 1), FileName);
 FValid := False;
 FSize := GetFileVersionInfoSize(FFileName, FHandle);
 if FSize > 0 then
 try
 GetMem(FBuffer, FSize);
 FValid := GetFileVersionInfo(FFileName, FHandle, FSize, FBuffer);
 except
 FValid := False;
 raise;
 end;
 Result := '';
 if FValid then
 VerQueryValue(FBuffer, '\VarFileInfo\Translation', p, Len)
 else
 p := nil;
 if P <> nil then
 GetTranslationString := IntToHex(MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^))), 8);
 if FValid then
 begin
 StrPCopy(szName, '\StringFileInfo\' + GetTranslationString + '\FileDescription');
 if VerQueryValue(FBuffer, szName, Value, Len) then
 Result := StrPas(PChar(Value));
 end;
 finally
 try
 if FBuffer <> nil then
 FreeMem(FBuffer, FSize);
 except
 end;
 try
 StrDispose(FFileName);
 except
 end;
 end;
 end;
 
 | 
 
 |