| 
| 
 | Вопрос # 6 515/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты! Есть некий код, с помощью которого создаётся ярлык на файл. В нём есть параметр с помощью которого можно сменить иконку, которая находитсяв ресурсах этого же файла (exe). Не могу разобраться как сделать так, чтобы можно было установить другую иконку, не стандартную, а например вторую или любую другую, которая находится в этом файле? Может иконку нужно добвлять как-то определённым образом в файл или... ? Кто знает подскажите, вот код процедуры:
 function CreateLink(const PathObj, PathLink, Desc, Param, IconFile: string; IconNumbr: Integer): Boolean;
 var
 IObject: IUnknown;
 SLink: IShellLink;
 PFile: IPersistFile;
 begin
 Result:= False;
 IObject := CreateComObject(CLSID_ShellLink);
 SLink := IObject as IShellLink;
 PFile := IObject as IPersistFile;
 with SLink do
 begin
 SetPath(PChar(PathObj));
 SetIconLocation( PChar( IconFile ), IconNumbr);
 SetArguments(PChar(Param));
 SetDescription(PChar(Desc));
 end;
 try
 PFile.Save(PWChar(WideString(PathLink)), FALSE);
 Result:= True;
 except
 Result:= False;
 end;
 end;
 
|  |   Вопрос задал: eclipse (статус: Посетитель)Вопрос отправлен: 19 февраля 2014, 08:00
 Состояние вопроса: решён, ответов: 1.
 |  Ответ #1. Отвечает эксперт: DNK Здравствуйте, eclipse!Гугл сказал, что возможно надо к этому делу подключить Функцию SHGetFileInfo. Тут есть пример разбора полетов.
 
|  | Ответ отправил: DNK (статус: Студент)Время отправки: 19 февраля 2014, 16:12
 
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 19 февраля 2014, 16:39; участников в обсуждении: 3. 
|   | DNK (статус: Студент), 19 февраля 2014, 08:16 [#1]:eclipse: Напиши какие параметры используешь для этой процедуры. Может в них касяк? "Digital Networked Knight" |  
|   | eclipse (статус: Посетитель), 19 февраля 2014, 08:23 [#2]:CreateLink(Application.ExeName, GetSpecialSYSPath(CSIDL_DESKTOPDIRECTORY)+ '\Название ярлыка.lnk', 'Всплывающая подсказка, описание', '/standart', Application.ExeName, 0); |  
|   | eclipse (статус: Посетитель), 19 февраля 2014, 08:25 [#3]:Добавлял иконки в экзешник через brcc32.exe, так же пробовал через Restorator, нифига чёт не получается сменить иконку при смене параметра IconNumbr. |  
|   | min@y™ (статус: Доктор наук), 19 февраля 2014, 11:26 [#4]:Слышь, а стандартными методами системы сменить иконку ярлыка удаётся? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | DNK (статус: Студент), 19 февраля 2014, 11:44 [#5]:Гугл сказал, что возможно надо к этому делу подключить Функцию SHGetFileInfo. Тут есть пример разбора полетов. "Digital Networked Knight" |  
|   | eclipse (статус: Посетитель), 19 февраля 2014, 12:09 [#6]:Спасибо, я позже гляну... |  
|   | eclipse (статус: Посетитель), 19 февраля 2014, 16:00 [#7]:min@y™, стандартными это как? вручную? пробовал только так SetIconLocation. Весь прикол в том, что на один экзешник нужно сделать 3 ярлыка, потому, что в программе организована работа с командными параметрами (ParamStr). |  
|   | eclipse (статус: Посетитель), 19 февраля 2014, 16:02 [#8]:DNK, Спасибо! через SHGetFileInfo всё вкатило... всё ровно. +1 в репу. |  
|   | min@y™ (статус: Доктор наук), 19 февраля 2014, 16:06 [#9]: Цитата (eclipse): вручную? да
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | eclipse (статус: Посетитель), 19 февраля 2014, 16:39 [#10]:min@y™, ахахахах |  19 февраля 2014, 17:17: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |