| 
| 
 | Вопрос # 5 665/ вопрос решён / | 
 |  Доброго времени суток, уважаемые эксперты! Рад приветсвовать вас.
 Суть вопроса заключается в следущем, как можно вытащить картинки из следущих файлов программными средствами???
 
 C:\Windows\System32\
 imageres.dll
 shell32.dll
 mmres.dll
 DDORes.dll
 
 Очень нужно помогите пожалуйста.
 
|  |   Вопрос задал: winner13 (статус: 1-ый класс)Вопрос отправлен: 6 октября 2011, 01:11
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Localiz Здравствуйте, winner13!вот простая программа IconLover
 http://www.aha-soft.com/iconlover/
 
|  | Ответ отправил: Localiz (статус: 1-ый класс)Время отправки: 6 октября 2011, 08:05
 
 |  Ответ #2. Отвечает эксперт: Мережников Андрей Здравствуйте, winner13!В DelphiWorld есть такой код для вытаскивания иконок (если конечно нужны иконки) - см.приложение
 Приложение:Переключить в обычный режим     type ThIconArray = array[0..0] of hIcon;type PhIconArray = ^ThIconArray; function ExtractIconExA(lpszFile: PAnsiChar;  nIconIndex: Integer;  phiconLarge : PhIconArray;  phiconSmall: PhIconArray;  nIcons: UINT): UINT; stdcall;  external 'shell32.dll' name 'ExtractIconExA'; function ExtractIconExW(lpszFile: PWideChar;  nIconIndex: Integer;  phiconLarge: PhIconArray;  phiconSmall: PhIconArray;  nIcons: UINT): UINT; stdcall;  external 'shell32.dll' name 'ExtractIconExW'; function ExtractIconEx(lpszFile: PAnsiChar;  nIconIndex: Integer;  phiconLarge : PhIconArray;  phiconSmall: PhIconArray;  nIcons: UINT): UINT; stdcall;  external 'shell32.dll' name 'ExtractIconExA';        procedure TForm1.Button1Click(Sender: TObject);var  NumIcons: integer;  pTheLargeIcons: phIconArray;  pTheSmallIcons: phIconArray;  LargeIconWidth: integer;  SmallIconWidth: integer;  SmallIconHeight: integer;  i: integer;  TheIcon: TIcon;  TheBitmap: TBitmap;begin  NumIcons :=  ExtractIconEx('C:\Program Files\Borland\Delphi 3\BIN\delphi32.exe',    -1, nil, nil, 0);  if NumIcons > 0 then  begin    LargeIconWidth := GetSystemMetrics(SM_CXICON);    SmallIconWidth := GetSystemMetrics(SM_CXSMICON);    SmallIconHeight := GetSystemMetrics(SM_CYSMICON);    GetMem(pTheLargeIcons, NumIcons * sizeof(hIcon));    GetMem(pTheSmallIcons, NumIcons * sizeof(hIcon));    FillChar(pTheLargeIcons^, NumIcons * sizeof(hIcon), #0);    FillChar(pTheSmallIcons^, NumIcons * sizeof(hIcon), #0);    ExtractIconEx('C:\Program Files\Borland\Delphi 3\BIN\delphi32.exe',      0, pTheLargeIcons, pTheSmallIcons, numIcons);    {$IFOPT R+}    {$DEFINE CKRANGE}    {$R-}    {$ENDIF}    for i := 0 to (NumIcons - 1) do    begin      DrawIcon(Form1.Canvas.Handle, i * LargeIconWidth, 0, pTheLargeIcons^[i]);      TheIcon := TIcon. Create;      TheBitmap := TBitmap.Create;      TheIcon.Handle := pTheSmallIcons^[i];      TheBitmap.Width := TheIcon.Width;      TheBitmap.Height := TheIcon.Height;      TheBitmap.Canvas.Draw(0, 0, TheIcon);      TheIcon.Free;      Form1.Canvas.StretchDraw(Rect(i * SmallIconWidth,        100, (i + 1) * SmallIconWidth, 100 + SmallIconHeight), TheBitmap);      TheBitmap.Free;    end;    {$IFDEF CKRANGE}    {$UNDEF CKRANGE}    {$R+}    {$ENDIF}    FreeMem(pTheLargeIcons, NumIcons * sizeof(hIcon));    FreeMem(pTheSmallIcons, NumIcons * sizeof(hIcon));  end;end;   
|  | Ответ отправил: Мережников Андрей (статус: Абитуриент)Время отправки: 6 октября 2011, 20:28
 Оценка за ответ: 5
 Комментарий к оценке: Спасибо. |  
 Мини-форум вопросаВсего сообщений: 12; последнее сообщение — 13 октября 2011, 17:23; участников в обсуждении: 4. 
|   | Amidamaru (статус: 4-ый класс), 6 октября 2011, 01:40 [#1]:картинки? иконки? тогда копай в сторону LoadIcon
 если же именно картинки (bmp например)
 то наверно тебе будет нужен LoadImage (он тоже может загружать иконки)
 чтобы получить значение для параметра hinst, наверное нужно вызвать LoadLibrary
 |  
|   | min@y™ (статус: Доктор наук), 6 октября 2011, 08:12 [#2]:Тебе надо написать программу для вытаскивания ресурсов или готовая прога подойдёт? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | winner13 (статус: 1-ый класс), 6 октября 2011, 18:55 [#3]:Угу в том и дело, что нужно писать программу, вытаскивающую из ресурсов картинки, спасибо за подсказку готовой программы, но что то типа такой же только с хотябы минимальным функционалом нужно. Основное ТЗ, это вытаскивать именно ресурс из рпедставленных мной выше фалов. Не решимых проблем нет, есть неприятные для нас решения. |  
|   | winner13 (статус: 1-ый класс), 7 октября 2011, 14:19 [#4]:=( Мда , оказывается нужно вытаскивать изображения фоновых каритнок виндовс, начиная от фона окон, заканчивая фоном исполняймых модулей... Помогите пожалуйста... Где все фоновые картинки в windows хранятся??? Не решимых проблем нет, есть неприятные для нас решения. |  
|   | min@y™ (статус: Доктор наук), 7 октября 2011, 14:47 [#5]: Цитата (winner13): Где все фоновые картинки в windows хранятся???  А что такое фоновые картинки?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 7 октября 2011, 14:47 [#6]:а что такое "фоновые картинки" ? картинка рабочего стола? Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 8 октября 2011, 09:08 [#8]:Могу дать свой пример программы, которая выдирает и отображает игральные карты из стандартной cards.dll. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | winner13 (статус: 1-ый класс), 8 октября 2011, 23:15 [#9]:Буду очень рад примеру +) Не решимых проблем нет, есть неприятные для нас решения. |  
|   | min@y™ (статус: Доктор наук), 9 октября 2011, 09:00 [#10]: Цитата (winner13): Буду очень рад примеру +)  Забирай тут.
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | winner13 (статус: 1-ый класс), 11 октября 2011, 11:54 [#11]:Наверное будет следующий вопрос, а как теперь из сторонних dll вытаскивать ресурсы не зная их номеров ... Не решимых проблем нет, есть неприятные для нас решения. |  
|   | winner13 (статус: 1-ый класс), 13 октября 2011, 17:23 [#12]:var h: THandle;
 B : TBitmap;
 begin
 h := LoadLibrary("MULTYRES.DLL");
 b := TBitmap.Create;
 if h <= 32 then
 ShowMessage("Bad Dll Load")
 else
 begin
 b.LoadFromResourceName(h, "B1");
 Image1.Picture.Bitmap.Assign(b);
 FreeLibrary(h);
 end;
 Не решимых проблем нет, есть неприятные для нас решения. |  13 октября 2011, 17:23: Статус вопроса изменён на решённый (изменил автор вопроса — winner13) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |