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

Вниз

Файлы ярлыков (*.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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
15-1154088626
test'er
2006-07-28 16:10
2006.08.27
Помогите с кодом


4-1146820955
Dimich1978
2006-05-05 13:22
2006.08.27
получить handle окна по неполному имени


2-1154861442
ЮзерОК
2006-08-06 14:50
2006.08.27
ListBox


4-1146849360
Teddy24
2006-05-05 21:16
2006.08.27
Как средствами API поключить сетевой диск?


15-1154333399
GrayFace
2006-07-31 12:09
2006.08.27
Magic Forum Patch v0.0