Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.24;
Скачать: CL | DM;

Вниз

Работа с ресурсами   Найти похожие ветки 

 
apic ©   (2006-08-17 14:17) [0]

Глубоко-уважаемые Мастера!!! Как то давно я уже задавал ятот вопрос но мне на него ни кто не ответил, может быть на этот раз найдется спец в этом деле... Вообщем мне нужно заменить иконку в исполняемом файле. Нигде не могу найти ответ на этот вопрос. Ну как-то же делают это такие программы как Exescop и ей подобные!!!!!!!!!!!!!!!!


 
Ketmar ©   (2006-08-17 14:31) [1]

> [0] apic ©   (17.08.06 14:17)
совсем-совсем нигде? и в гугле искал? и в рамблере? и в яндексе? и все партизанят?

UpdateResource().


 
apic ©   (2006-08-17 14:41) [2]

Знаю, что UpdateResource()., ТОЛЬКО КАК ИМ НАХРЕН ПОЛЬЗОВАТЬСЯ!!! ТАМ ЕЩЕ ХЕРОВА ТУЧА ВСЯКИХ ФУНКЦИЙ ПРИМЕНЯЕТСЯ! И все равно не хрена не работает!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


 
Ketmar ©   (2006-08-17 14:53) [3]

> [2] apic ©   (17.08.06 14:41)
рядовой, прекратите истерику! %-)

как-как... хэлп читать. код писать. если тебе готовый код нужен -- так и указывай. а в справке, по-моему, всё достаточно доступно описано...

на что могу подкинуть хинт -- это на то, что информация об иконке и сам битмап иконки хранятся отдельно. это полезно учитывать. но если тебе заменять 2один к одному" (т.е. только вид) -- то это не так уж и важно.


 
apic ©   (2006-08-17 16:17) [4]

Умоляю, товарищь сержант, скинте исходничик... Хоть с примерно...  Я один находил, но после выполнения функции иконка у экзешника вообще исчезала (становилась как у консольной проги), но сам экзешник запускался, к сожалению на данный момент сам исходник уже наврядли найду...


 
apic ©   (2006-08-17 16:20) [5]

Мне нужно что то типа function ChangeExeIcon(fIcon{иконка которую будем вставлять}, fExe{экзешник в котором будем заменять}:string):boolean;


 
Ketmar ©   (2006-08-17 16:34) [6]

> [4] apic ©   (17.08.06 16:17)
а лень мне писать. подожди, может у кого-то есть. %-)


 
apic ©   (2006-08-17 16:43) [7]

Перекинте кто-нибудь на Делфи:
H = BeginUpdateResource(exepath, False)
Dim B() As Byte
ReDim B(0 To FileLen(icopath) - 1)
Open icopath For Binary As #1
Get #1, , B()
Close #1
Call UpdateResource(H, RT_ICON, 30001, 0, B(22), UBound(B) - 21)
Erase B
ReDim B(0 To FileLen(headerpath) - 1)
Open headerpath For Binary As #1
Get #1, , B()
Close #1
Call UpdateResource(H, RT_GROUP_ICON, 1, 0, B(0), 20)
Call EndUpdateResource(H, False)


 
Ketmar ©   (2006-08-17 16:48) [8]

> [7] apic ©   (17.08.06 16:43)
FreeBASIC? зачот. %-)


 
apic ©   (2006-08-17 16:53) [9]

Я не понял тебя, что таке "зачот. %-)". Ну я просто в васике пока не петрю...


 
Ketmar ©   (2006-08-17 17:11) [10]

> [9] apic ©   (17.08.06 16:53)
это значит "я видел сей компилятор и остался очень доволен его качеством, а также впечатлён стандартными библиотеками". видишь, как длинно получилось? %-)


 
apic ©   (2006-08-17 17:11) [11]

А может это под замену иконки переделать ктон-нибудь, как-нибудь сможет:
HRSRC hResLoad;     // handle to loaded resource  
HANDLE hExe;        // handle to existing .EXE file  
HRSRC hRes;         // handle/ptr. to res. info. in hExe  
HANDLE hUpdateRes;  // update resource handle  
char *lpResLock;    // pointer to resource data  
BOOL result;  
// Load the .EXE file that contains the dialog box you want to copy.  
hExe = LoadLibrary("hand.exe");  
if (hExe == NULL)  
{  
   ErrorHandler("Could not load exe.");  
}  
 
// Locate the dialog box resource in the .EXE file.  
hRes = FindResource(hExe, "AboutBox", RT_DIALOG);  
if (hRes == NULL)  
{  
   ErrorHandler("Could not locate dialog box.");  
}  
 
// Load the dialog box into global memory.  
hResLoad = LoadResource(hExe, hRes);  
if (hResLoad == NULL)  
{  
   ErrorHandler("Could not load dialog box.");  
}  
 
// Lock the dialog box into global memory.  
lpResLock = LockResource(hResLoad);  
if (lpResLock == NULL)  
{  
   ErrorHandler("Could not lock dialog box.");  
}  
 
// Open the file to which you want to add the dialog box resource.  
hUpdateRes = BeginUpdateResource("foot.exe", FALSE);  
if (hUpdateRes == NULL)  
{  
   ErrorHandler("Could not open file for writing.");  
}  
 
// Add the dialog box resource to the update list.  
result = UpdateResource(hUpdateRes,       // update resource handle  
    RT_DIALOG,                   // change dialog box resource  
    "AboutBox",                  // dialog box name  
    MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),  // neutral language
    lpResLock,                   // ptr to resource info  
    SizeofResource(hExe, hRes)); // size of resource info.  
if (result == FALSE)  
{  
   ErrorHandler("Could not add resource.");  
}  
 
// Write changes to FOOT.EXE and then close it.  
if (!EndUpdateResource(hUpdateRes, FALSE))  
{  
   ErrorHandler("Could not write changes to file.");  
}  
 
// Clean up.  
if (!FreeLibrary(hExe))  
{  
   ErrorHandler("Could not free executable.");  
}


 
ANTPro ©   (2006-08-17 17:34) [12]

http://delphimaster.net/view/4-1155733452/


 
apic ©   (2006-08-17 17:46) [13]

var
hExe,hUpdateRes : tHandle;
hRes,hResLoad : hrSrc;
lpResLock : pointer;
begin
hExe := LoadLibrary(pansichar(application.exename));
hRes := FindResource(hExe, "todolist", "text");
hResLoad := LoadResource(hExe, hRes);
lpResLock := LockResource(hResLoad);

hUpdateRes := BeginUpdateResource("todo.exe", FALSE);
UpdateResource(hUpdateRes, "text", "todolist",  LANG_NEUTRAL,
   lpResLock, SizeofResource(hExe, hRes));
EndUpdateResource(hUpdateRes, FALSE);

FreeLibrary(hExe);

Что такое "todolist", "text". Как я понимаю это имена ресурсов, а как мне их узнать, если я заменяю иконку в случайном экзешнике???????????????



Страницы: 1 вся ветка

Текущий архив: 2006.12.24;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.053 c
2-1165498288
Roman_ln
2006-12-07 16:31
2006.12.24
Есть функция преобразования даты в числовой эквивалент?


15-1164648130
Loginov Dmitry
2006-11-27 20:22
2006.12.24
Проблемы с винтом


2-1165425952
Ezorcist
2006-12-06 20:25
2006.12.24
Удалить из списка элементы, удовл. условию.


15-1165313338
ocean
2006-12-05 13:08
2006.12.24
Удаленный доступ по ADSL


11-1142164166
qert
2006-03-12 14:49
2006.12.24
Как узнать что объект освобожден или нет