Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 515

Раздел: Delphi » Прочее
/ вопрос решён /

Здравствуйте, уважаемые эксперты! Есть некий код, с помощью которого создаётся ярлык на файл. В нём есть параметр с помощью которого можно сменить иконку, которая находитсяв ресурсах этого же файла (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 Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 19 февраля 2014, 08:00
Состояние вопроса: решён, ответов: 1.

Ответ #1. Отвечает эксперт: DNK

Здравствуйте, eclipse!
Гугл сказал, что возможно надо к этому делу подключить Функцию SHGetFileInfo. Тут есть пример разбора полетов.

Ответ отправил: DNK (статус: Студент)
Время отправки: 19 февраля 2014, 16:12


Мини-форум вопроса

Всего сообщений: 10; последнее сообщение — 19 февраля 2014, 16:39; участников в обсуждении: 3.
DNK

DNK (статус: Студент), 19 февраля 2014, 08:16 [#1]:

eclipse: Напиши какие параметры используешь для этой процедуры. Может в них касяк?
"Digital Networked Knight"
eclipse

eclipse (статус: Посетитель), 19 февраля 2014, 08:23 [#2]:

CreateLink(Application.ExeName, GetSpecialSYSPath(CSIDL_DESKTOPDIRECTORY)+ '\Название ярлыка.lnk', 'Всплывающая подсказка, описание', '/standart', Application.ExeName, 0);
eclipse

eclipse (статус: Посетитель), 19 февраля 2014, 08:25 [#3]:

Добавлял иконки в экзешник через brcc32.exe, так же пробовал через Restorator, нифига чёт не получается сменить иконку при смене параметра IconNumbr.
min@y™

min@y™ (статус: Доктор наук), 19 февраля 2014, 11:26 [#4]:

Слышь, а стандартными методами системы сменить иконку ярлыка удаётся?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
DNK

DNK (статус: Студент), 19 февраля 2014, 11:44 [#5]:

Гугл сказал, что возможно надо к этому делу подключить Функцию SHGetFileInfo. Тут есть пример разбора полетов.
"Digital Networked Knight"
eclipse

eclipse (статус: Посетитель), 19 февраля 2014, 12:09 [#6]:

Спасибо, я позже гляну...
eclipse

eclipse (статус: Посетитель), 19 февраля 2014, 16:00 [#7]:

min@y™, стандартными это как? вручную? пробовал только так SetIconLocation. Весь прикол в том, что на один экзешник нужно сделать 3 ярлыка, потому, что в программе организована работа с командными параметрами (ParamStr).
eclipse

eclipse (статус: Посетитель), 19 февраля 2014, 16:02 [#8]:

DNK, Спасибо! через SHGetFileInfo всё вкатило... всё ровно. +1 в репу.
min@y™

min@y™ (статус: Доктор наук), 19 февраля 2014, 16:06 [#9]:

Цитата (eclipse):

вручную?

да
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
eclipse

eclipse (статус: Посетитель), 19 февраля 2014, 16:39 [#10]:

min@y™, ахахахах

19 февраля 2014, 17:17: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:43
Выполнено за 0.02 сек.