|
Вопрос # 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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|