![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
описание файлов
Салават © (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