Имеется ехешник, из коророго я сделал ресурс типа RC_DATA. Гружу его методами: FindResource LoadResource. Вопрос: как мне сохранить ехе файл на диске, если я получаю корректно результат hGlobal от ф-ции LoadResource ? Спасибо!!
hGlobal - это адрес где лежит екзешник в памяти. SizeofResource - даст тебе его размер, а потом юзай стандартные ф-ии работы с файлом
вот на С: Code (Text): HRSRC hResInfo = FindResource... HANDLE hGlobal = LoadResource... DWORD dwSize = SizeofResource(GetModuleHandle(NULL), hResInfo); FILE *f = fopen("c:\\youfile.exe","wb"); if(f) { fwrite(hGlobal, dwSize , 1, f); fclose(f); } ессно подразумевается што у тебя не Windows 9x и выше
FILE* F = fopen("dump.bin", "wb"); fwrite(hGlobal, 1, SizeofResource(hModule, hResInfo), F); fclose(F);
Странно, а в МСДН пишут про LockResource. Я его и использую: Code (Text): void *pdata; HRSRC hrsrc; hrsrc = FindResource(NULL, (LPCSTR)IDR_SKIN1, "SKIN"); pdata = LockResource(LoadResource(NULL, hrsrc)), SizeofResource(NULL, hrsrc)); // здесь идут манипуляции с pdata
LockResource имел смысл на Win3.1, а щас он нужен тока шоб протекторы через него пугали молодых крякеров
Хотя на этот счёт есть такая мысль: Если плевать на официальные доки и писать исходя из фактического положения вещей, то может оказаться, что, например, в Виндовс 2006 этому LockResource() придадут какой-нибудь другой смысл, и программа, отлично работающая в 98/NT не будет там работать. Что вы думаете по этому поводу?