Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 13.07.2010, 19:53
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Может у Тебя какие исходники остались??? Просто тогда получается что Resouse Tuner в папке GroupIcon хранит придуманный ресурс.. Я просто в это не верю!!! В Delphi тогда не было бы константы RT_GROUP_ICON... ИМХО Мне кажется что GroupIcon это как индексация иконок!!! Может поможешь???
Ответить с цитированием
  #17  
Старый 13.07.2010, 20:19
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка

Цитата:
Сообщение от Romix
Может у Тебя какие исходники остались??? Просто тогда получается что Resouse Tuner в папке GroupIcon хранит придуманный ресурс.. Я просто в это не верю!!! В Delphi тогда не было бы константы RT_GROUP_ICON... ИМХО Мне кажется что GroupIcon это как индексация иконок!!! Может поможешь???

Про придуманный ресурс - это уже бред, странные Вы выоды делаете, я итак уже все разжевал и речи о вымышленных ресурсах вообще не шла.
RT_ICON - это обозначения ресурса со значком, иконкой,
RT_GROUP_ICON - это обозначение папки или директории, в который эти самые иконки и находятся.
И вообще, стандартный пример редактора ресурсов, по крайней мере виевера, есть в стандартной поставке Д7 в папке Демос, если мне память не изменяет, но точно есть.
Еще есть опенсорс редактор ресурсов на Д2010 вроде, называется XN Resource Editor.
Ответить с цитированием
  #18  
Старый 13.07.2010, 20:52
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Исходник не рабочий... Он под delphi 2006 у меня 2010... Если ты так хорошо разбираешься в ресурсах, может все таки напишешь пару строк как прочитать ресурс в папке GroupIcon... И что бы в мемо... В долгу не останусь!!!
Ответить с цитированием
  #19  
Старый 13.07.2010, 21:48
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
По умолчанию

Код:
type
   TForm1 = class(TForm)
     Button1: TButton;
     Memo1: TMemo;
     procedure Button1Click(Sender: TObject);
   private
   end;

 var
   Form1: TForm1;

 implementation

 {$R *.dfm}

 function enumResNamesProc(module: HMODULE; restype, resname: PChar;
   list: TStrings): Integer; stdcall;
 begin
   if HiWord(Cardinal(resname)) <> 0 then
     list.Add('  ' + resname)
   else
     list.Add(Format('  #%d', [loword(Cardinal(resname))]));
   Result := 1;
 end;

 Function StockResourceType(restype: PChar): string;
 const
   restypenames: Array [1..22] of String =
     ( 'RT_CURSOR', //       = MakeIntResource(1); 
      'RT_BITMAP', //       = MakeIntResource(2); 
      'RT_ICON',   //       = MakeIntResource(3); 
      'RT_MENU',   //       = MakeIntResource(4); 
      'RT_DIALOG', //       = MakeIntResource(5); 
      'RT_STRING', //       = MakeIntResource(6); 
      'RT_FONTDIR',//       = MakeIntResource(7); 
      'RT_FONT',   //       = MakeIntResource(8); 
      'RT_ACCELERATOR',//   = MakeIntResource(9); 
      'RT_RCDATA', //       = MakeIntResource(10); 
      'RT_MESSAGETABLE',//  = MakeIntResource(11); 
      // DIFFERENCE = 11; 
      'RT_GROUP_CURSOR',// = MakeIntResource(DWORD(RT_CURSOR +7DIFFERENCE)); 
      'UNKNOWN',        // 13 not used 
      'RT_GROUP_ICON',  //   = MakeIntResource(DWORD(RT_ICON +DIFFERENCE)); 
      'UNKNOWN',        // 15 not used 
      'RT_VERSION',     // = MakeIntResource(16); 
      'RT_DLGINCLUDE',  // = MakeIntResource(17); 
      'UNKNOWN',
       'RT_PLUGPLAY',    // = MakeIntResource(19); 
      'RT_VXD',         // = MakeIntResource(20); 
      'RT_ANICURSOR',   // = MakeIntResource(21); 
      'RT_ANIICON'     // = MakeIntResource(22); 
    );
 var
   resid: Cardinal absolute restype;
 begin
   if resid in [1..22] then
     Result := restypenames[resid]
   else
     Result := 'UNKNOWN';
 end;


 function enumResTypesProc(module: HMODULE; restype: PChar; list: TStrings): Integer; stdcall;
 begin
   if HiWord(Cardinal(restype)) <> 0 then
     list.Add(restype)
   else
     list.Add(Format('Stock type %d: %s', [LoWord(Cardinal(restype)),
       StockResourcetype(restype)]));
   EnumResourceNames(module, restype, @enumResNamesProc, Integer(list));
   Result := 1;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   memo1.Clear;
   if not EnumResourceTypes(hinstance, @enumResTypesProc, Integer(memo1.Lines)) then
     memo1.Lines.Add(Format('GetLastError= %8.8x', [GetLastError]))
   else
     memo1.Lines.Add('Successful');
 end;

 end.
Ответить с цитированием
  #20  
Старый 13.07.2010, 21:58
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Самое интерестное что с этим я разобрался только что... Спасибо конечно... Список ресурсов я получил... А как теперь прочесть ресурс в папке GroupIcon и вывести в Memo??? Тоесть я получаю имя папки - GroupIcon.. Потом получаю имя первого ресурса в папке GroupIcon, а как открыть его?? Мучаюсь... Вот в чем был с самого начала вопрос!!!
Ответить с цитированием
  #21  
Старый 13.07.2010, 22:11
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка

Цитата:
Сообщение от Romix
Самое интерестное что с этим я разобрался только что... Спасибо конечно... Список ресурсов я получил... А как теперь прочесть ресурс в папке GroupIcon и вывести в Memo??? Тоесть я получаю имя папки - GroupIcon.. Потом получаю имя первого ресурса в папке GroupIcon, а как открыть его?? Мучаюсь... Вот в чем был с самого начала вопрос!!!

Надо учиться правильно задавать вопросы.
А вообще теперь, как я помню, надо загрузить по указателю на ресурс данные в стрим, а оттуда читать компоном TImage или TIcon.
Поиск рулит.
Ответить с цитированием
  #22  
Старый 15.07.2010, 21:08
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Хочу готовый пример!!!
Ответить с цитированием
  #23  
Старый 15.07.2010, 21:39
mozayka mozayka вне форума
Прохожий
 
Регистрация: 21.03.2010
Адрес: Санкт-Петербург
Сообщения: 12
Версия Delphi: 6 Enterprise
Репутация: 10
По умолчанию

Romix, поиск творит чудеса, например, здесь приведен хороший пример, который показывает как извлекать значок из одного приложения и подстановки его вместо имеющегося в другой исполняемый файл ...
Ответить с цитированием
  #24  
Старый 15.07.2010, 21:39
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Цитата:
Сообщение от Romix
Хочу готовый пример!!!
Хочу 100 рублей
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #25  
Старый 16.07.2010, 12:26
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Давайте я расставлю все точки над "И"... Как менять иконку я разобрался, но вот поменять на нужную немогу... Когда открываю экзешник в Resource Tunere то там есть папка GroupIcon в папке GroupIcon есть ресурс со списком иконок которые есть в приложении... Список выглядит так:
Цитата:
48x48 4-bit; Icon Entry Ord: 1
32x32 4-bit; Icon Entry Ord: 2
16x16 4-bit; Icon Entry Ord: 3
48x48 8-bit; Icon Entry Ord: 4
32x32 8-bit; Icon Entry Ord: 5
16x16 8-bit; Icon Entry Ord: 6
48x48 32-bit; Icon Entry Ord: 7
32x32 32-bit; Icon Entry Ord: 8
16x16 32-bit; Icon Entry Ord: 9
Мне нужно получить этот список... Это текстовая информация.. Из этого списка получить указаль на ресурс иконки (которая выделена красным цветом) В данном случае "8"... И уже потом её поменять!!! Так вот вопрос... Как загрузить в Memo эту текстовую информацию исходя из вот этого примера:
Код:
var
hResLoad, hRes: HRSRC;
hExe, hUpdateRes: THandle;
lpResLock: PChar;
begin
// Загружаем источник иконки как библиотеку (с ресурсами)
hExe := LoadLibrary(PChar(SourceExe));
if hExe = 0 then Exit;
try
// Ищем в источнике главную иконку
hRes := FindResource(hExe, MakeIntResource(8), RT_ICON);
if hRes = 0 then Exit;
// Загружаем иконку
hResLoad := LoadResource(hExe, hRes);
if hResLoad = 0 then Exit;
// Лочим ресурс иконки. Получаем указатель не ее данные.
lpResLock := LockResource(hResLoad);
Только нужно наверное RT_ICON поменять на RT_GROUP_ICON... Помогите очень прошу!!!
Ответить с цитированием
  #26  
Старый 16.07.2010, 12:33
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Вот чего я хочу добиться!!!
Изображения
Тип файла: jpg rt.jpg (89.4 Кбайт, 17 просмотров)
Ответить с цитированием
  #27  
Старый 16.07.2010, 12:48
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка

Цитата:
Сообщение от Romix
Вот чего я хочу добиться!!!

Слушай, как я понял по твоему рисунку, то у тебя в экзешники ВСЕГО 2 ЗНАЧКА, а так как они многостраничные, то они содержат В СЕБЕ несколько значков разного разрешения (сорри, если неправильно выразился), так вот, по сути тебе надо извлечь нужный значок и с помощью классов для работы со значками выдрать значок нужного разрешения и уже потом вставить в нужный экзешник, не спорю что наверно можно сделать все проще, но я пока незнаю как. Классы для работы со значками есть в самой Делфе вроде или приглядись к юнитам по ссылке чела выше.

И вообще не совсем понимаю зачем те нужен определенного размера значок, ведь ось, в зависимости от текущего отображения в папке показывает соотв. размера значок, так вот, например в 7 такой твой значок при определенных условиях будет смотреться коряво.

Последний раз редактировалось Vayrus, 16.07.2010 в 12:51.
Ответить с цитированием
  #28  
Старый 16.07.2010, 17:39
mozayka mozayka вне форума
Прохожий
 
Регистрация: 21.03.2010
Адрес: Санкт-Петербург
Сообщения: 12
Версия Delphi: 6 Enterprise
Репутация: 10
По умолчанию

Romix, пример, который приведен мной выше содержит требуемые тебе методы ... т.е. манипулируя свойствами класса TAdvancedIcon можно получать доступ к отдельным элементам сложных значков ...
__________________
... стремясь что-то сделать подумай о том как ты этого будешь достигать ...
Ответить с цитированием
  #29  
Старый 19.07.2010, 13:51
Romix Romix вне форума
Начинающий
 
Регистрация: 10.02.2008
Сообщения: 136
Версия Delphi: XE2
Репутация: 41
По умолчанию

Vayrus... Ты предложил хороший код... Но не мог бы ты помочь?? Выдернуть из exe толькр список ресурсов который находится в папке GROUP_ICON... Только из неё.. И нечего лишнего!!! Заранее благодарен!!
P.S. Я конечно понимаю... Можно из всего списка выделить только GROUP_ICON... Но тут важна скорость... Просто что бы с самого начала перебрала ресурсы из GROUP_ICON... Ничего лишнего...

Последний раз редактировалось Romix, 19.07.2010 в 14:02.
Ответить с цитированием
  #30  
Старый 19.07.2010, 16:51
Аватар для Vayrus
Vayrus Vayrus вне форума
Исполняемый Ретровирус
 
Регистрация: 09.08.2008
Адрес: Umbrella Corporation
Сообщения: 743
Репутация: 1293
Лампочка

Цитата:
Сообщение от Romix
Vayrus... Ты предложил хороший код... Но не мог бы ты помочь?? Выдернуть из exe толькр список ресурсов который находится в папке GROUP_ICON... Только из неё.. И нечего лишнего!!! Заранее благодарен!!
P.S. Я конечно понимаю... Можно из всего списка выделить только GROUP_ICON... Но тут важна скорость... Просто что бы с самого начала перебрала ресурсы из GROUP_ICON... Ничего лишнего...

OK, жди

ЗЫ ЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗЗ
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:58.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter