Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.07;
Скачать: CL | DM;

Вниз

описание файлов   Найти похожие ветки 

 
Салават   (2005-06-06 08:41) [0]

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


 
dmitry501 ©   (2005-06-06 10:05) [1]

Салават   (06.06.05 8:41)
По английски описание файла notepad.exe будет notepad.


 
Салават   (2005-06-06 10:56) [2]

?? не понял :(  у каждой программы или dll- ки есть описание при наведении мышкой на файл оно появляется понятно что если винда английская то и описание у notepad.exe будет notepad.а как получить вот эту инфу с помощью SHGetFileInfo не получается там не то есть что-то подобное когда получаеш инфу у ярлыка но там COM обьекты неужели нету какойнить WinAPI функции.


 
Digitman ©   (2005-06-06 11:02) [3]

запятые расставлять религия не позволяет ?
галиматью твою читать врагу не пожелаешь)


> есть что-то подобное когда получаеш инфу у ярлыка но там
> COM обьекты


да, именно так.
только это не "описание файла", а "свойства документа".
реализуется это действительно с использованием СОМ-технологии и интерфейсов (IPropertyStorage, IPropertySetStorage)


 
Digitman ©   (2005-06-06 11:06) [4]


> описание при наведении мышкой на файл оно появляется


не гони ботву)

вот я навел мышку на notepad.exe (или на любой иной exe-файл) и увидел хинт - "Тип: Приложение".

ни о каком "блокноте" в ЭТОТ момен речи не идет.


 
Салават   (2005-06-06 11:08) [5]

Прошу прощения. Это значит чтобы получить свойства конкретного файла надо создать к нему ярлык, получить свойства документа и потом удалить ярлык? А нельзя без ярлыков?


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

Выбери свойства там действительно тип приложение а еще ниже описание Блокнот.


 
Digitman ©   (2005-06-06 11:12) [7]

а ярлык-то тут причем ?

свойствами документа обладает сам документ.


> свойства конкретного файла


я не понял, ты о файлах или о документах, хранящихся в файлах ?


 
Digitman ©   (2005-06-06 11:16) [8]


> Выбери свойства там действительно тип приложение а еще ниже
> описание Блокнот


с каких пор "наведи мышку" эквивалентно "просмотри свойства" ?


 
dmitry501 ©   (2005-06-06 11:19) [9]

Салават   (06.06.05 11:12) [6]
Это ты толкуешь про поле "комментарий", которое есть в ярлыке к программе. Туда можно занести любой текст, он и будет всплывать в хинте при наведении на ярлык.


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

Не знаю как у тебя но у меня при наведении на файл вылезает Hint:

Описание:Блокнот
Производитель: Корпорация Microsoft
Версия:
Дата создания
Размер


 
Салават   (2005-06-06 11:21) [11]

Нет это не комментарий


 
Digitman ©   (2005-06-06 11:22) [12]


> Салават   (06.06.05 11:20) [10]


слово "Блокнот" сидит в ярлыке.

напиши там, в ярлыке, "Л.Толстой, "Война и мир" - увидишь войну и мир


 
Digitman ©   (2005-06-06 11:24) [13]


> у каких файлов есть описания


термин и св-во "Описание" есть у *.lnk - файлов

куча таких файлов может ссылаться на один и тот же файл, соответственно и "описаний" может быть куча разных - все зависит от фантазии юзера


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

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


 
Anatoly Podgoretsky ©   (2005-06-06 11:35) [15]

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


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

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

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;


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

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

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


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

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


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

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

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


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


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

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


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

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


 
Digitman ©   (2005-06-06 12:27) [22]

смажь)


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

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


 
Digitman ©   (2005-06-06 12:37) [24]

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


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

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


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

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


 
Anatoly Podgoretsky ©   (2005-06-06 13:22) [27]

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


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

Однако докапался спосибо увсем вот пример:
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;


 
Digitman ©   (2005-06-06 13:56) [29]


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


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

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


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

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


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

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


 
Digitman ©   (2005-06-06 15:10) [32]


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


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


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

>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;



Страницы: 1 вся ветка

Текущий архив: 2005.08.07;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.045 c
3-1120362614
serguncho
2005-07-03 07:50
2005.08.07
Переименование полей Access


1-1121633515
cranium
2005-07-18 00:51
2005.08.07
Bitmap, DLL и ресурсы


1-1121886452
ЦУКОР5
2005-07-20 23:07
2005.08.07
TControlBar


1-1121769566
Destroyer
2005-07-19 14:39
2005.08.07
Как вывести текст вертикально?


1-1119562614
Зипп
2005-06-24 01:36
2005.08.07
Насколько эффективно использование Зип-архивов для сокрытия