Не меняется application.icon при передаче параметров программе

Мне необходимо менять иконку программы в runtime.

Реализую в принципе банально:

Application.Icon.LoadFromFile(extractfilepath(application.exename) + '\myicon.ico');

И все работает корректно, но только если не передавать параметры программе. К примеру, если я запускаю свою программу с дополнительными параметрами, к примеру "Project1.exe another", то иконка уже не хочет меняться. Просто ничего не происходит.

Пробовал кучу разных методов, ничего не помогает. Заранее благодарен за любую помощь.

UPD - выяснил, что данное поведение появляется только при запуске с ярлыка, если запускать к примеру через cmd - То все ок.


Ответы (2 шт):

Автор решения: Alex R.

Когда вы используете ярлык, то иконка используется из ярлыка - это штатное поведение Windows.


введите сюда описание изображения


Так что параметры здесь ни при чем.

→ Ссылка
Автор решения: krtcod

Чтож, жаль, что никто не знает решения. Тогда отвечу на часть своего же вопроса по поводу того, как отследить, что запуск был произведен с ярлыка.

function GetShortcutName(out LinkName: string): Boolean;
var
  si: TStartupInfo;
begin
  Result := False;
 FillChar(si, SizeOf(TStartupInfo), 0);
 GetStartupInfo(si);
 if (si.dwFlags and  $800  ) <> 0 then
 begin
  Result := True;
  LinkName := si.lpTitle;
 end;
end;

Далее вызываем:

var
  sLink: string;
begin

  if GetShortcutName(sLink) then
  caption:='run from Shortcut - '+ sLink
  else caption:='Not run from shortcut.';
→ Ссылка