Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
ВнизФайлы ярлыков (*.lnk) Найти похожие ветки
← →
AlexanderMS © (2006-08-02 16:30) [0]Скажите, пожалуйста, есть ли какие-либо компоненты, позволяющие прочитать содержимое файлов-ярлыков? То есть нужно получить полный путь файла, параметры, иконку и т. п. Может, есть примеры или статьи на эту тему?
← →
Ketmar © (2006-08-02 16:43) [1]есть.
← →
AlexanderMS © (2006-08-02 16:46) [2]
> есть.
Ответ - со скоростью света, но малосодержательный. :)
← →
Zeqfreed © (2006-08-02 16:48) [3]IShellLink
Steve Teixeira and Xavier Pacheco: Delphi 6 Developer"s Guide
Глава 16, часть 4.
← →
Ketmar © (2006-08-02 16:51) [4]> [2] AlexanderMS © (02.08.06 16:46)
точно по вопросу. никто не спрашивал, где и как; интересовал сам факт наличия. я факт подтвердил.
← →
AlexanderMS © (2006-08-02 17:03) [5]
> IShellLink
А модуль?
Скорректирую вопрос: где достать компоненты для работы с файлами ярлыков?
← →
Zeqfreed © (2006-08-02 17:10) [6]> [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 19:06) [7]Большое спасибо! Нашёл подходящий компонент. Остался вопрос:
Как загрузить иконку в ImageList, если дан путь к файлу, содержащему эту иконку, и известен её ID?
← →
Zeqfreed © (2006-08-02 19:23) [8]
ExtractAssociatedIcon
?
← →
AlexanderMS © (2006-08-03 16:50) [9]> ExtractAssociatedIcon?
Как использовать, покажите, пожалуйста. Мне нужно "занести" эту иконку в ImageList, с тем чтобы потом использовать её как картинку размером 16x16 у кнопки на ToolBar. Если можно, примерчик.
← →
Zeqfreed © (2006-08-03 17:42) [10]> [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 18:27) [11]Большое спасибо. Сейчас попробую.
← →
AlexanderMS © (2006-08-04 16:09) [12]Почти получилось.
Но столкнулся с проблемой получения пути к иконке ярлыка.
Видно, проблема здесь: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
содержит путь иконки, и всё ОК.
Это уже исходный код второго компонента. В первом была та же проблема.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c