Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1153983727
tButton
2006-07-27 11:02
2006.08.27
Delphi: 7 vs 5


15-1153955958
Dust
2006-07-27 03:19
2006.08.27
Редактор исходного кода с аутлайнингом


2-1154929494
ph0sgen
2006-08-07 09:44
2006.08.27
Данные в EХЕ


2-1154609678
webpauk
2006-08-03 16:54
2006.08.27
TreeView select item


2-1155004047
vladimirg88
2006-08-08 06:27
2006.08.27
печать координат





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский