Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизИзменить иконку программы Найти похожие ветки
← →
ArtIcons (2004-04-29 14:52) [0]Можно ли во время работы программы изменить её иконку, так чтобы иконка в проводнике стала такой которую я хочу. Или иконка самого exe-шника назначаетс\ один раз только при компиляции программы?
← →
DVM © (2004-04-29 14:54) [1]
> Можно ли во время работы программы изменить её иконку
нет
> Или иконка самого exe-шника назначаетс\ один раз только
> при компиляции программы?
да
← →
Андрей Сенченко © (2004-04-29 14:56) [2]ArtIcons (29.04.04 14:52)
Application.Icon.LoadFromStream();
Application.Icon.LoadFromFile();
← →
Андрей Сенченко © (2004-04-29 14:58) [3]DVM © (29.04.04 14:54) [1]
Как по-Вашему меняются иконки в "аське" и почтовиках ? они перекомпилируются на ходу ?
← →
DVM © (2004-04-29 15:12) [4]
> Андрей Сенченко © (29.04.04 14:58) [3]
О какой иконке идет речь?
Об иконке окна? Тогда я согласен - можно.
Иконка в EXE-файле? При запущенной программе в Win нельзя изменить ее EXE-файл.
Проводник отображает иконки, находящиеся в Exe файле, извлекая их функцией ShFileInfo().
Я об этой иконке.
← →
WebErr © (2004-04-29 15:38) [5]Application.Icon - это иконка всего приложения.
← →
DVM © (2004-04-29 15:40) [6]
> Application.Icon - это иконка всего приложения.
и что?
← →
SammIk © (2004-04-29 15:50) [7]Не, ну ясно сказали?
Нельзя писать в программу, если она запущена.
Есть вариант писать на прамую на диск(на мои взгляд, много гемороя).
Или перехватывать вызовы(хз какои) функции и если
она запрашивает икону твоего приложения, возвращать еи
новыи вариант иконки(помоему глупо так делать, но можно).
В любом случае нужно почитать о ПЕ фаилах и о формате иконок
← →
WebErr © (2004-04-29 16:06) [8]
> DVM © (29.04.04 15:40) [6]
Значит все окна приложения получат нужную иконку. Даже на панели задач появится всё та же иконка!
← →
SammIk © (2004-04-29 16:08) [9]>WebErr ©
Цитирую:
так чтобы иконка в проводнике
← →
Андрей Сенченко © (2004-04-29 16:46) [10]DVM © (29.04.04 15:12) [4]
Слово "проводник" я пропустил.
← →
8ung © (2004-04-29 17:53) [11]
procedure TForm1.Button1Click(Sender: TObject);
var h : THANDLE;
p : pointer;
k, f : integer;
w : WORD;
sz : longbool;
begin
f := _lopen("c:\cdrom.ico",0);
_llseek(f,$16,0);
k := 766 - $16;
p := AllocMem(k);
_lread(f,p,k);
h := BeginUpdateResource("c:\trhide.exe",false);
w := SUBLANG_SYS_DEFAULT * 2048 or LANG_NEUTRAL;
sz := UpdateResource(h,RT_ICON,MAKEINTRESOURCE(1),w,pointer(p),k);
EndUpdateResource(h,false);
_lclose(f);
caption := inttostr(k) + " " + inttostr(integer(sz));
end;
Сам разбирайся...
← →
DVM © (2004-04-29 19:40) [12]
> 8ung © (29.04.04 17:53) [11]
Пройдет только с чужим экзешником, но не со своим. Т.е. сам у себя ресурсы не подправишь. Только через промежуточную программу.
Есть еще способ изменить иконку у файла (или у программы) даже не изменяя сам файл. Надо воспользоваться одним из расширений оболочки. Можно файлам одного типа по определенному условию назначать разные иконки. Но нужен свой обработчик все равно, т.е. еще одна программа.
Изврат хотя это все. Не стоит овчинка выделки.
← →
Mim1 © (2004-04-29 19:46) [13]ИМХО У проводника есть кэш иконок, и он совсем не ожидает что иконка изменится.
← →
Maksss (2004-04-29 19:50) [14]
> Пройдет только с чужим экзешником, но не со своим. Т.е.
> сам у себя ресурсы не подправишь. Только через промежуточную
> программу.
делаешь копию своенго еxe рядом миняешь иконку, завершаешь первую прогу и запускаешь ехе с измененной иконкой
трояны рулят)
← →
DVM © (2004-04-29 19:55) [15]
> делаешь копию своенго еxe рядом миняешь иконку, завершаешь
> первую прогу и запускаешь ехе с измененной иконкой
> трояны рулят)
А с именами как быть? Подумай хорошенько, что получится.
← →
DVM © (2004-04-29 19:57) [16]
> ИМХО У проводника есть кэш иконок, и он совсем не ожидает
> что иконка изменится.
Можно заставить системный ImageList обновиться. Хотя если файл изменился его иконка будет перечитана автоматом.
← →
SammIk © (2004-04-29 20:08) [17]походу все варианты перебрали, выбираи)
← →
Андрей Сенченко © (2004-04-29 20:11) [18]DVM © (29.04.04 19:55) [15]
А с именами как быть? Подумай хорошенько, что получится.
В приведенном случае, если такую возможность заранее предусмотреть штатно в программе, то подставную копию можно запускать и из темповой директории.
ИМХО
← →
DVM © (2004-04-29 20:13) [19]
> В приведенном случае, если такую возможность заранее предусмотреть
> штатно в программе, то подставную копию можно запускать
> и из темповой директории.
А иконку глядеть тоже в темповой? Не то все равно, что в начале требовалось.
← →
KLAUS © (2004-04-29 20:18) [20]ТАк же можно иконку через ресурсы поменять!
← →
DVM © (2004-04-29 20:18) [21]
> ТАк же можно иконку через ресурсы поменять!
Можно. Но не в запущенной программе.
← →
Андрей Сенченко © (2004-04-29 20:21) [22]DVM © (29.04.04 20:13) [19]
Подождите ...
1. Копируем свою программу в темповую директорию и запускаем ее там с нужным ключом.
2. Гасим основную программу.
3. Подменяем ресурс в основной программе.
3*. Ради приличия выставляем на старой программе нужные дату и время и создания.
4. Запускаем основную программу.
5. Гасим и удаляем подставную.
По-моему все должно получиться.
← →
Андрей Сенченко © (2004-04-29 20:22) [23]KLAUS © (29.04.04 20:18) [20]
Внимательно смотри вопрос. Я сперва тоже не заметил что именно хочет поменять автор.
← →
SammIk © (2004-04-29 20:23) [24]А хакои это вообще надо?
Если прет скрыть прогу, то перехватываите вызова АПИ.
И никаких проблем.
← →
DVM © (2004-04-29 20:28) [25]
> Андрей Сенченко © (29.04.04 20:21) [22]
Да так получится.
6) Молимся чтобы не произошло какого-либо сбоя, иначе потеряем экзешник навеки.
> SammIk © (29.04.04 20:23) [24]
> Если прет скрыть прогу, то перехватываите вызова АПИ.
Это сложнее значительно.
← →
Андрей Сенченко © (2004-04-29 20:29) [26]DVM © (29.04.04 20:28) [25]
6.
If copyfile() := false
Но это уже совсем другой вопрос.
← →
SammIk © (2004-04-29 20:30) [27]А по мне, гемору больше с изменением иконы.
И качество скрытия гораздо выше))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.038 c