Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Вниз

Как заменить ресурс?   Найти похожие ветки 

 
Dot   (2004-10-08 23:12) [0]

Мастера! Есть фпйл 1.ехе в нем содержится картинка/иконка/итд в виде ресурса.
У меня есть 1.bmp допустим или что нить еще.
Как мне программно заменить картинку в фале на 1.bmp ?????
файл не мой и не я его создавал .


 
cerber1 ©   (2004-10-09 13:45) [1]

Bспользуй Resource Hacker и не мучайся. А если програмно, то в хелпе к Resource Hacker описано как это делать.


 
Okcid   (2004-10-09 17:28) [2]


> cerber1 ©   (09.10.04 13:45) [1]

ResHack конечно хорошо, но хелп(во всяком случае в моей версии) там на англицком...


 
Dot   (2004-10-09 23:22) [3]

Нет что значит воспользуйся РеСХАкером, это не ответ, если не знаешь то не отвечай пожалуйста.


 
Anti   (2004-10-11 21:52) [4]

Мастера а что поправде нет ниче? ато тоже ищу как бы?


 
Fay ©   (2004-10-11 22:02) [5]

Вы что, издеваетесь? MSDN у нас для кого?
Только не надо говорить, "там на англицком" - янки на Си не балакают.


 
Fay ©   (2004-10-11 22:03) [6]

Сам проверять не буду - есть другие дела.
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.");
}


 
Nick Denry ©   (2004-10-12 00:00) [7]

Сам проверять не буду - есть другие дела

Работает.


 
cerber1 ©   (2004-10-12 00:13) [8]

Есть два вариента решения твоей "проблемы":
1 через формат РЕ файлов
2 Через функции АПИ:
BeginUpdateResource...
UpdateResource...

но если ты не знаешь точного неазвания ресурса в проге, то тебе надо его найти, выдрать и заменить, а это уже больше функций АПИ:
EnumResourceName
enumResourceType... и.т.д

2 Fay
ResHacker поддерживает режим замены через скрипт, а это проще чем размалеввывать толпу callback-функций и потом рыться в их содержимом. А MSDN - это всегда успеешь.


 
Fay ©   (2004-10-12 03:11) [9]


> А MSDN - это всегда успеешь.

MSDN - рано не бывает 8)



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

Форум: "WinAPI";
Текущий архив: 2004.11.21;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
1-1100108231
JustmE
2004-11-10 20:37
2004.11.21
DWORD/WORD -> STRING


14-1099344291
saNat
2004-11-02 00:24
2004.11.21
Украли сотовый.


14-1099436480
Кто---то
2004-11-03 02:01
2004.11.21
Лицензии на программы Какие они бывают и переведены ли на русский


3-1098693352
Term
2004-10-25 12:35
2004.11.21
Проблема с запросом


1-1099738462
Lamer v0.000001
2004-11-06 13:54
2004.11.21
TCombobox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский