Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.09.2014, 22:55   #1
hapera2
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 65
По умолчанию Проблема в закрытии обновления ресурсов программы.

Я хотел сделать так, что бы моя программа умела изменять иконки других программ. Нашел рабочую функцию (модуль MadRes):
Код:
function UpdateExeIcon(exeFile, iconGroup, icoFile: string) : boolean;
var resUpdateHandle : dword;
begin
resUpdateHandle := BeginUpdateResourceW(PWideChar(wideString(exeFile)), false);
if resUpdateHandle <> 0 then begin
result := LoadIconGroupResourceW(resUpdateHandle, PWideChar(wideString(iconGroup)), 1033, PWideChar(wideString(icoFile)));
result := EndUpdateResourceW(resUpdateHandle, false) and result;
end else
 result := false;
end;
Когда я вызываю эту функцию вписываю название именно группы иконок, но получается так, что устанавливается просто иконка одного размера а не группа.

После этого решил еще поискать и нашел более сложный вариант:
Код:
function UpdateExeIcon(exeFile, iconGroup, icoFile: string) : boolean;
var resUpdateHandle : dword;
    c:TPIconGroup;
begin
  resUpdateHandle := BeginUpdateResourceW(PWideChar(wideString(exeFile)), false);
  if resUpdateHandle <> 0 then
  begin
    if (icongroup='MAINICON') or GetIconGroupResourceW(resUpdateHandle, PWideChar(wideString(iconGroup)), 1033, c) then
    begin
{      result := LoadIconGroupResourceW(resUpdateHandle, PWideChar(wideString(iconGroup)), language, PWideChar(wideString(icoFile)));
      if result then}
        SaveIconGroupResourceW(resUpdateHandle, PWideChar(wideString(iconGroup)), 1033, 'saved.ico');
    end
                                                                                             else
    if StrToIntDef(iconGroup, -1)>-1 then
    begin
      result := LoadIconGroupResourceW(resUpdateHandle, PWideChar(pointer(strtoint(iconGroup))), 1033, PWideChar(wideString(icoFile)));
      if result then
        SaveIconGroupResourceW(resUpdateHandle, PWideChar(pointer(strtoint(iconGroup))), 1033, 'saved.ico');
    end
    else
      result := false;
    result := EndUpdateResourceW(resUpdateHandle, false) and result;
  end else
    result := false;
end;
Только к сожалению тут снова всплывает одна проблемка. EndUpdateResourceW почему то как всегда вылетает с ошибкой. (
Цитата:
First chance exception at $0052D1E3. Exception class $C0000005 with message 'access violation at 0x0052d1e3: read of address 0x0b175e18'. Process Project1.exe (15448)
).
Причем мне уже давно известна эта проблема. C acWorkRes то же самое.
Да и дело не в программе в которой ресурсы обновляются: ведь первая функция работает а вторая нет.
Вроде все тоже самое но почему? Ткните пальцем друзья

Последний раз редактировалось Stilet; 15.09.2014 в 08:08.
hapera2 вне форума Ответить с цитированием
Старый 14.09.2014, 22:57   #2
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Цитата:
Я хотел сделать так, что бы моя программа умела изменять иконки других программ
Зачем....?
indexx вне форума Ответить с цитированием
Старый 14.09.2014, 23:13   #3
hapera2
Пользователь
 
Регистрация: 12.11.2013
Сообщений: 65
По умолчанию

Цитата:
Сообщение от indexx Посмотреть сообщение
Зачем....?
Есть задача. Я хочу ее выполнить
hapera2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сообщение при закрытии программы в CloseQuery FaTaL Общие вопросы Delphi 7 10.05.2012 09:19
Автозапуск при закрытии программы soniag Общие вопросы Delphi 2 21.02.2012 11:56
Ошибка при закрытии программы cargo29 Общие вопросы Delphi 10 17.05.2011 23:31
Выполнить действия при закрытии программы Lauri Общие вопросы Delphi 2 08.02.2011 02:34
Ошибка при закрытии программы Crystallon Общие вопросы Delphi 17 23.08.2010 21:07