Оновлення ресурсів

Наступний приклад копіює діалоговому вікні ресурс з виконуваний файл в одну РУКУ.EXE, до іншої ноги.EXE, виконайте такі дії.:

  1. Використання на LoadLibrary функція завантажити виконуваний файл РУКУ.EXE.
  2. Знайдіть та завантажте діалоговому вікні ресурсів за допомогою функції FindResource і LoadResource.
  3. Функція LockResource використовується для отримати вказівник на діалоговому вікні ресурс даних.
  4. Щоб відкрити маркер оновлення до ПІДНІЖЖЯ використовується функція BeginUpdateResource .EXE.
  5. Щоб скопіювати діалоговому вікні ресурс з БОКУ використовується функція UpdateResource .EXE в НОГУ.EXE.
  6. Функція EndUpdateResource використовується для завершення оновлення.

Наступний код реалізує такі дії.

HRSRC hResLoad;     / / Ручка завантажено ресурс РУЧКОЮ hExe;        / / Ручка до існуючої.EXE файлу HRSRC hRes;         / / Ручка/ptr. Res інформація. у hUpdateRes РУЧКУ hExe;  / / оновлення ресурс ручкою char * lpResLock;    / / вказівник на ресурс даних BOOL результат; 
 
/ / Завантажити на.EXE-файл, що містить діалоговому вікні, потрібно скопіювати. 
hExe = LoadLibrary("hand.exe"); 
 
Якщо (hExe = = NULL) {ErrorHandler ("не вдалося завантажити exe."); 
} / / Знайдіть діалоговому вікні ресурсів в регіоні.EXE файлу. 
hRes = FindResource (hExe, "AboutBox", RT_DIALOG); 
 
Якщо (hRes = = NULL) {ErrorHandler ("не вдається знайти діалогового."); 
} / / Завантажити діалогове вікно до глобальної пам'яті. 
hResLoad = LoadResource (hExe, hRes); 
 
Якщо (hResLoad = = NULL) {ErrorHandler ("не вдається завантажити діалогове вікно."); 
} / / Блокування діалогове вікно до глобальної пам'яті. 
lpResLock = LockResource(hRes); 
 
Якщо (lpResLock = = NULL) {ErrorHandler ("можуть не заблокувати діалогового."); 
} / / Відкрити файл, до якого потрібно додати діалоговому вікні ресурсів. 
hUpdateRes = BeginUpdateResource ("foot.exe", FALSE); 
 
Якщо (hUpdateRes = = NULL) {ErrorHandler ("не вдалося відкрити файл для запису."); 
} / / Додати діалоговому вікні ресурс, щоб оновити список. 
результат = UpdateResource (hUpdateRes, / / оновлення ресурс ручка RT_DIALOG, / / змінити в діалоговому вікні ресурсу "AboutBox", / / діалоговому вікні Назва MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL), / / нейтральної мови
     lpResLock, / / ptr ресурс інформація SizeofResource (hExe, hRes)); / / розмір інформації ресурсу. 
 
Якщо (результат = = FALSE) {ErrorHandler ("не вдалося додати ресурс."); 
} / / Запис змін до ноги.EXE та закрийте його. 
Якщо (!.EndUpdateResource (hUpdateRes, FALSE)) {ErrorHandler ("не вдалося записати зміни до файлу."); 
} / / Очистити. 
Якщо (!.FreeLibrary(hExe)) {ErrorHandler ("може не безкоштовно виконуваний файл."); 
}