![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Файлы ярлыков (*.lnk) [D7, XP]
AlexanderMS © (2006-08-02 16:30:00)Скажите, пожалуйста, есть ли какие-либо компоненты, позволяющие прочитать содержимое файлов-ярлыков? То есть нужно получить полный путь файла, параметры, иконку и т. п. Может, есть примеры или статьи на эту тему?
AlexanderMS (2006-08-04 16:09:00) [1]Почти получилось.
Но столкнулся с проблемой получения пути к иконке ярлыка.
Видно, проблема здесь:
var
SL: IShellLink;
PF: IPersistFile;
AStr: array[0..MAX_PATH] of char;
...
OleCheck(SL.GetIconLocation(AStr, MAX_PATH, IconIndex));
IconLocation := AStr;
...
IconLocation равно''. СмотрюAStr. Первый элемент массива равен #0, а остальное, вроде бы, - реальный путь к иконке. На первом месте должен быть диск D, а там - #0. При этом если иконка стандартная (например, содержится в Shell32.dll), то IconLocation
содержит путь иконки, и всё ОК.
Это уже исходный код второго компонента. В первом была та же проблема.
AlexanderMS (2006-08-03 18:27:00) [2]Большое спасибо. Сейчас попробую.
Zeqfreed (2006-08-03 17:42:00) [3]> [9] AlexanderMS © (03.08.06 16:50)
Думаю здесь подойдет просто ExtractIcon:
procedure TForm1.Button1Click(Sender: TObject);
var
Icon : hIcon;
ListIcon : TIcon;
len, Idx : Cardinal;
Src, Path : PChar;
begin
Src := '%WINDIR%\System32\calc.exe';
GetMem(Path, 255);
try
len := ExpandEnvironmentStrings(Src, Path, 255);
if (len = 0) then Exit;
Idx := 0;
Icon := ExtractIcon(hInstance, Path, Idx);
if (Icon <> 0) then begin
ListIcon := TIcon.Create;
try
ListIcon.Handle := Icon;
ImageList1.AddIcon(ListIcon);
ImageList1.Draw(Canvas, 0, 0, 0);
finally
ListIcon.Free;
end;
end;
finally
FreeMem(Path);
end;
end;
AlexanderMS (2006-08-03 16:50:00) [4]> ExtractAssociatedIcon?
Как использовать, покажите, пожалуйста. Мне нужно "занести" эту иконку в ImageList, с тем чтобы потом использовать её как картинку размером 16x16 у кнопки на ToolBar. Если можно, примерчик.
Zeqfreed (2006-08-02 19:23:00) [5]
ExtractAssociatedIcon?
AlexanderMS (2006-08-02 19:06:00) [6]Большое спасибо! Нашёл подходящий компонент. Остался вопрос:
Как загрузить иконку в ImageList, если дан путь к файлу, содержащему эту иконку, и известен её ID?
Zeqfreed (2006-08-02 17:10:00) [7]> [5] AlexanderMS © (02.08.06 17:03)
А без компонентов-то никак чтоли в наше трудное время? :)
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_programming/shortcuts/shortcut.asp
http://www.torry.net/pages.php?id=515— TASLink Creator v.1.6
http://www.google.com/search?hs=d1F&hl=ru&client=opera&rls=en&q=IShellLink+%2BDelphi&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
AlexanderMS (2006-08-02 17:03:00) [8]
> IShellLink
А модуль?
Скорректирую вопрос: где достать компоненты для работы с файлами ярлыков?
Ketmar (2006-08-02 16:51:00) [9]> [2] AlexanderMS © (02.08.06 16:46)
точно по вопросу. никто не спрашивал, где и как; интересовал сам факт наличия. я факт подтвердил.
Zeqfreed (2006-08-02 16:48:00) [10]IShellLink
Steve Teixeira and Xavier Pacheco: Delphi 6 Developer's Guide
Глава 16, часть 4.
AlexanderMS (2006-08-02 16:46:00) [11]
> есть.
Ответ - со скоростью света, но малосодержательный. :)
Ketmar (2006-08-02 16:43:00) [12]есть.