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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2011, 12:16   #1
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
Восклицание Подгрузить иконку в ресурс

Есть юнит

PHP код:
unit MainIcon;

interface

uses Windows;
function 
ChangeMAINICON(SourceExeTargetExeString): Boolean;
implementation
////////////////////////////////////////////////////////////////////////////////
// Аналог макроса MAKELANGID в С++ //
// Возвращает языковой идетификатор //
////////////////////////////////////////////////////////////////////////////////
function MAKELANGID(:DWORD ;DWORD) : LANGID;
begin
Result 
:= (s shl 10) or (p);
end;
////////////////////////////////////////////////////////////////////////////////
// Функция GetMAINICONLanguage получает имя exe-файла и возвращает //
// языковой идетификатор его главной иконки //
////////////////////////////////////////////////////////////////////////////////
function GetMAINICONLanguage(const sFileNameString): LANGID;
// Функция обратного вызова. Вызывается для каждого языкового
// идентификатора данного ресурса. В lParam ей передаю указатель на переменную,
// в которую возвратится результат.
function EnumResLangProc(hModuleTHandlelpszTypePChar;
lpszNamePCharwIDLanguageWORD;
lParamPointer): BOOLstdcall;
begin
PWORD
(lParam)^ := wIDLanguage;
Result := False// После первого вызова сразу прекращаем перебор,
// т.к. не видел ни одной проги с разными иконками под разные языки
end;

var 
hExeTHandle;
begin
hExe 
:= LoadLibrary(PChar(sFileName)); // Загружаю файл.
// Запускаю перебор языков главной иконки
EnumResourceLanguages(hExeRT_ICONMakeIntResource(1),
@
EnumResLangProcLPARAM(@Result));
FreeLibrary(hExe); // Выгружаю файл
end;
////////////////////////////////////////////////////////////////////////////////
// ::: Функция ChangeMAINICON ::: //
// //
// Зачада: Изменяет главную иконку целевого exe-файла, на главную //
// иконку исходного файла путем правки ресурсов. //
// (пока под главной иконкой подразумевается иконка //
// с индексом = 1) //
// //
// Входные данные: SourceExe, TargetExe - текстовые строки с путями к //
// исходному и целевому exe-фаайлам. //
// //
// Выходные данные: True - замена иконки произошла успешно, //
// False - ошибка, замена не произошла. //
////////////////////////////////////////////////////////////////////////////////
function ChangeMAINICON(SourceExeTargetExeString): Boolean;
var
hResLoadhResHRSRC;
hExehUpdateResTHandle;
lpResLockPChar;
begin
Result 
:= False;
// Загружаем источник иконки как библиотеку (с ресурсами)
hExe := LoadLibrary(PChar(SourceExe));
if 
hExe 0 then Exit;
try
// Ищем в источнике главную иконку
hRes := FindResource(hExeMakeIntResource(1), RT_ICON);
if 
hRes 0 then Exit;
// Загружаем иконку
hResLoad := LoadResource(hExehRes);
if 
hResLoad 0 then Exit;
// Лочим ресурс иконки. Получаем указатель не ее данные.
lpResLock := LockResource(hResLoad);
if 
lpResLock nil then Exit;
// Открываем TargetExe для редактирования ресурсов
hUpdateRes := BeginUpdateResource(PChar(TargetExe), False);
if 
hUpdateRes 0 then Exit;
// Заменяем главную иконку TargetExe на SourceExe
if UpdateResource(hUpdateResRT_ICONMakeIntResource(1),
GetMAINICONLanguage(PChar(TargetExe)), // ???
lpResLockSizeofResource(hExehRes)) = False then Exit;
// Сохраняем сделанные изменения
Result := EndUpdateResource(hUpdateResFalse);
finally
// В любом случае закрываем открытый SourceExe
FreeLibrary(hExe);
end;
end;
////////////////////////////////////////////////////////////////////////////////


end

он берет иконку из одного ЕХЕ и заменяет ее у другого, как можно сделать что бы брать просто иконку а не из ЕХЕ (например icon.ico) или как подгрузить в переменную иконку типа ресурса.
cargo29 вне форума Ответить с цитированием
Старый 03.06.2011, 17:51   #2
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
По умолчанию

есть тут кто нить???? может кто помочь?
cargo29 вне форума Ответить с цитированием
Старый 03.06.2011, 22:23   #3
cargo29
Форумчанин
 
Регистрация: 13.12.2010
Сообщений: 603
По умолчанию

Люди ?????????????
cargo29 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подгрузить js или txt файл в функции FanRa3 JavaScript, Ajax 18 20.01.2011 05:42
Подгрузить код HTML из внешнего файла Gladunin-Urii HTML и CSS 17 22.08.2009 16:36
подгрузить код на все страници! memka PHP 6 05.04.2009 18:29
Как подгрузить изображение с инета ? jkeks Работа с сетью в Delphi 4 03.07.2008 14:16
Подгрузить страницу в IFRAME Seqular HTML и CSS 1 20.08.2007 21:25