Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.031 c
3-1082365092
sergg
2004-04-19 12:58
2004.05.16
Ошибка: "В операции должен использоваться обновляемый запрос"


1-1083219222
WondeRu
2004-04-29 10:13
2004.05.16
GetDIBBits - нот а гуд!!!


9-1072950191
mixir
2004-01-01 12:43
2004.05.16
Рисование в изометрии


9-1072382293
lucky
2003-12-25 22:58
2004.05.16
Помогите плз сделать 3d врыв в DelphiX.


6-1080142505
Katya_mgkit
2004-03-24 18:35
2004.05.16
NetBios





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский