На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Как программно сменить иконку чужого EXE , С помощью Дельфи менять иконки в чужих экзешниках?
    Как с помошью Дельфи поменять иконку у чужого EXE-файла, если ее нет то вставить ее туда???
      В факе, подмена ресурсов.
          Хех - не все так просто :)
          С ресурсами работать без проблем, а вот подмена именно главной иконки приложения может привести к появлению очередных шишек на лбу программиста :)
          Спросите у Dufa - он в свое время делал этот трюк...
            Пример на скорую руку написан, так что на его внешний вид и т.д внимания не обращать. Там используется acWorkRes немного исправленный :)
            Прикреплённый файлПрикреплённый файлoo.rar (11.01 Кбайт, скачиваний: 1627)
              s-mike не ту ссылочку дал, там нерабрчий вариант.
              Подмена ресурсов
                Большое спасибо всем :D
                Очень очень благодарен 8-)
                  Dufa, огромнейшое тебе спасибо за модуль который находится в архиве!!!!!!!!!!! Спас жизнь!!!! Я так долго над эти бился!!!! :D :D
                  [+]

                  Добавлено
                  У меня есть только вот какой еще вопрос: как заменить иконку у exe файла если размер этой иконки в exe файле не совпадает с размером иконки в файле .ico? То есть если размер этот больше? Какие есть соображения?
                    BenQ, Он должен заменить
                      поменять заголовок файла и ваще всё пропатчить...
                        Извените за глупый вопрос , но как этим пользоваться?
                          Цитата mckie @
                          Извените за глупый вопрос , но как этим пользоваться?

                          Как, как...
                          Dufa, же выложил архив... Там пример есть...
                            Парни, а вы не пробовали прогу у которой ресурс(иконка) заменяется(а на самом деле вставляется, а прежняя иконка остаётся на месте) запускать? Я пробовал. Не работает. Выдаёт ошибку. А у вас? И ещё, а если прога проверяет свою контрольную сумму, то с новой иконкой заменённой (а тем более просто вставленной) она ведь выдаст ошибку. Может кто выложит пример реально заменяющий оригинальную иконку, и притом чтоб программа потом запускалась. Былоб интересно посмотреть, ато что-то уже заколебался, никак не полуается сделать нормальную замену.

                            Добавлено
                            Беру некоторые свои слова назад. Программы работают с добавленной иконкой, но не все. Некоторые не работают. А вот в
                            BeginUpdateResourceS(Edit1.Text, False); Второй параметр должен при True по идее заменять иконку в EXE файле а при Fаlse добавлять её. А на самом деле при True он удаляят все ресурсы из EXE фала и добавляет иконку. При этом файл понятное дело не запускается. Это нехорошо.
                              Если подменять или добавлять ресурс (как это делать можно найти тут на сайте), надо смотреть, что бы ехе"шник не был запакован (upx, aspack, и т.д.). Если *.ехе запакован и вы добавили ресурс, то приложение запускатся не будет однзначно.
                                самый лучший подход использовать BeginUpdateResource, UpdateResource, EndUpdate У меня исходника щас нет, он в несколько строчек, на С++ в инете дофига можно найти инфы по смене значка с их использованием, вместе с коментариями что она не работает в Delphi(=>> При использовании функции UpdateResource вместо константы RT_ICON следует использовать ее идентификатор, т. е 3 )
                                  AVS-INTERSOFT, Да я ж пример выложил. Он точно пашет :)
                                    Uses
                                    acWorkRes;

                                    procedure ExportData(Path, AName: string; Data: TFileStream); overload;
                                    var
                                    hFile: HWND;
                                    Buf: array of Byte;
                                    begin
                                    hFile := BeginUpdateResource(PChar(Path), False);
                                    try
                                    if hFile = 0 then
                                    begin
                                    RaiseLastOSError;
                                    end;
                                    SetLength(Buf, Data.Size);
                                    Data.Position := 0;
                                    Data.Read(Buf[0], Data.Size);
                                    if not UpdateResource(hFile, RT_GROUP_ICON, PChar(AName), 0, @Buf[0], Data.Size) then
                                    RaiseLastOSError;
                                    Finalize(Buf);
                                    finally
                                    EndUpdateResource(hFile, False);
                                    end;
                                    end;

                                    sImage5.Picture.LoadFromFile(OpenDialog1.FileName); // Грузим иконку в картинку image

                                    /// Тут сменяем иконку
                                    var
                                    q: dword;
                                    begin
                                    q := BeginUpdateResourceS(SaveDialog1.FileName + '.exe', False);
                                    if q <> 0 then
                                    begin
                                    if not ReplaceIconGroupResourceS(q, 'MAINICON', 0, OpenDialog1.FileName) then
                                    caption := ('Иконка не установлена!!!');
                                    EndUpdateResource(q, False);
                                    end;
                                    end;
                                    Помогите с кодом
                                    :wall: :wall: >:(
                                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                    0 пользователей:


                                    Рейтинг@Mail.ru
                                    [ Script execution time: 0,0442 ]   [ 17 queries used ]   [ Generated: 29.03.24, 05:36 GMT ]