Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

описание файлов


Страницы:   1 2

Салават ©   (2005-06-06 08:41:00) 

Как получить описание файла и вообще у каких файлов есть описания. Пример файл:notepad.exe описание:Блокнот.


Салават   (2005-06-06 15:18:00) [1]

>Digitman
без вас не смог бы и еще в том коде ошибка должно быть так
function FileDescription(AFileName: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(AFileName) + 1), AFileName);
   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
   begin
   VerQueryValue(FBuffer, '\VarFileInfo\Translation', p, Len);
   if P <> nil then
     GetTranslationString := IntToHex(MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^))), 8);
     StrPCopy(szName, '\StringFileInfo\' + GetTranslationString + '\FileDescription');
     VerQueryValue(FBuffer, szName, Value, Len);
     Result := StrPas(PChar(Value));
   end;

 finally
   try
     if FBuffer <> nil then FreeMem(FBuffer, FSize);
   except
   end;
   try
     StrDispose(FFileName);
   except
   end;
 end;
end;


Digitman   (2005-06-06 15:10:00) [2]


> Салават   (06.06.05 15:07) [31]


ну так вот ты сам себе и ответил на свой же вопрос !


Салават   (2005-06-06 15:07:00) [3]

>Digitman
по моему не в праве поскольку не имеет ресурса


Anatoly Podgoretsky   (2005-06-06 14:00:00) [4]

Ну точно кошку ищет.


Digitman   (2005-06-06 13:56:00) [5]


> Салават   (06.06.05 13:53) [28]
> Однако докапался спосибо увсем вот пример:


малацца.
теперь попробуй применить этот алгоритм к любому созданному тобой текстовому файлу.

разве текстовый файл не в праве иметь "описание" ?)


Салават   (2005-06-06 13:53:00) [6]

Однако докапался спосибо увсем вот пример:
function FileDescription(AFileName: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(AFileName) + 1), AFileName);
   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 := '';
   VerQueryValue(FBuffer, '\VarFileInfo\Translation', p, Len);
   if P <> nil then
     GetTranslationString := IntToHex(MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^))), 8);

   if FValid then
     begin
       StrPCopy(szName, '\StringFileInfo\' + GetTranslationString + '\FileDescription');
        if FValid then VerQueryValue(FBuffer, szName, Value, Len);
        Result := StrPas(PChar(Value));
     end;

 finally
   try
     if FBuffer <> nil then FreeMem(FBuffer, FSize);
   except
   end;
   try
     StrDispose(FFileName);
   except
   end;
 end;
end;


Anatoly Podgoretsky   (2005-06-06 13:22:00) [7]

Что пытаешься, может ищешь черную кошку в темной комнате.


Салават   (2005-06-06 13:12:00) [8]

>Anatoly Podgoretsky
угу пытаюсь спасибо Плохишу


Anatoly Podgoretsky   (2005-06-06 13:00:00) [9]

Салават   (06.06.05 12:31) [23]
Что вытаскиваешь.


Digitman   (2005-06-06 12:37:00) [10]

не тем , знач, смазывал


Салават   (2005-06-06 12:31:00) [11]

через ярлык тоже не вытаскивается


Digitman   (2005-06-06 12:27:00) [12]

смажь)


Салават   (2005-06-06 12:23:00) [13]

Млин никак не получается!!!


Плохиш   (2005-06-06 11:48:00) [14]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/resources/versioninformation.asp


КиТаЯц   (2005-06-06 11:48:00) [15]

>Салават   (06.06.05 11:41) [18]

>Можно поподробней пожалуста или ссылку на статью


Чего подробней?  [16] или  [17]?


Салават   (2005-06-06 11:41:00) [16]

Можно поподробней пожалуста или ссылку на статью


Digitman   (2005-06-06 11:40:00) [17]

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Applications\notepad.exe\shell

FriendlyCache = "Блокнотъ"


КиТаЯц   (2005-06-06 11:40:00) [18]

Держи, может поможет (если я правильно понял что надо)... ;)

procedure ShowProperties(Path: string);
 var SEInfo: TShellExecuteInfo;
begin
  FillChar(SEInfo, SizeOf(SEInfo), 0);
  SEInfo.cbSize := SizeOf(TShellExecuteInfo);
  with SEInfo do
  begin
     fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_INVOKEIDLIST or SEE_MASK_FLAG_NO_UI;
     Wnd := Application.Handle;
     lpFile := PChar( Path );
     lpVerb := 'Properties';
     lpParameters := '';
     hInstApp := 0;
     lpIDList := nil;
     lpDirectory := PChar(Path);
     nShow := SW_SHOWNORMAL;
  end;
  ShellExecuteEx(@SEInfo);
end;


Anatoly Podgoretsky   (2005-06-06 11:35:00) [19]

Салават   (06.06.05 11:20) [10]
Здесь нет описания, это информация из каталога и ресурса Version


Салават   (2005-06-06 11:28:00) [20]

Да ё-к-л-м-н возмем любую exe , смотрим её свойства там есть описание программы еще раз пример:cmd.exe
Описание:Обработчик команд Windows


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо