Не меняется application.icon при передаче параметров программе
Мне необходимо менять иконку программы в runtime.
Реализую в принципе банально:
Application.Icon.LoadFromFile(extractfilepath(application.exename) + '\myicon.ico');
И все работает корректно, но только если не передавать параметры программе. К примеру, если я запускаю свою программу с дополнительными параметрами, к примеру "Project1.exe another", то иконка уже не хочет меняться. Просто ничего не происходит.
Пробовал кучу разных методов, ничего не помогает. Заранее благодарен за любую помощь.
UPD - выяснил, что данное поведение появляется только при запуске с ярлыка, если запускать к примеру через cmd - То все ок.
Ответы (2 шт):
Когда вы используете ярлык, то иконка используется из ярлыка - это штатное поведение Windows.
Так что параметры здесь ни при чем.
Чтож, жаль, что никто не знает решения. Тогда отвечу на часть своего же вопроса по поводу того, как отследить, что запуск был произведен с ярлыка.
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.';
