|
Вопрос # 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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|