Форум: "WinAPI";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Внизописание файлов Найти похожие ветки
← →
Салават (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 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.08.07;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.039 c