Güncelleştirme Kaynakları

Aşağıdaki örnek, bir yürütülebilir dosya, el için iletişim kutusunda kaynak kopyalar.exe, başka bir ayak.Aşağıdaki adımları izleyerek exe,:

  1. Kullanım LoadLibrary işlevini el yürütülebilir dosyası yüklenemiyor.EXE.
  2. Bulun ve iletişim kutusunda kaynağı yüklemek için FindResource ve LoadResource işlevleri kullanın.
  3. İletişim kutusunun kaynak veri işaretçisi almak için LockResource işlevini kullanın.
  4. AYAK bir güncelleme ele açmak için BeginUpdateResource işlevini kullanın.EXE.
  5. İletişim kutusunun Kaynak elden kopyalamak için UpdateResource işlevini kullanın.exe foot.EXE.
  6. Güncelleştirmeyi tamamlamak için EndUpdateResource işlevini kullanın.

Aşağıdaki kod bu adımları uygular.

Hrsrc hResLoad;     / / işlemek için yüklenen kaynak TANITICISINI Tom_aus_tirol;        / / idare mevcut.exe dosyasını hrsrc Xact_s_lastresourcemanager;         / / kolu/ptr. Res. haberdar etmek için. hExe kolu hUpdateRes içinde;  / / Güncelleme kaynak tanıtıcısını char * lpResLock;    / / kaynak veri bool sonucu; işaretçi 
 
/ / Yük.exe dosyasını kopyalamak istediğiniz iletişim kutusu içerir. 
hExe = LoadLibrary("hand.exe"); 
 
Eğer (Tom_aus_tirol == null) {Hataİşleyici ("exe yüklenemedi."); 
} / / İletişim kutusunda kaynak bulun.exe eğe. 
Xact_s_lastresourcemanager = FindResource (Tom_aus_tirol, "AboutBox", RT_DIALOG); 
 
Eğer (Xact_s_lastresourcemanager == null) {Hataİşleyici ("iletişim kutusu bulunamadı."); 
} / / İletişim kutusunun Genel belleğe yüklemek. 
hResLoad = LoadResource (Tom_aus_tirol, Xact_s_lastresourcemanager); 
 
Eğer (hResLoad == null) {Hataİşleyici ("iletişim kutusu yüklenemedi."); 
} / / İletişim kutusunun Genel belleğe kilit. 
lpResLock = LockResource(hRes); 
 
Eğer (lpResLock == null) {Hataİşleyici ("değil kilit kutusu olabilir."); 
} / / İletişim kutusunda kaynak eklemek istediğiniz dosyayı açın. 
hUpdateRes = BeginUpdateResource ("foot.exe", false); 
 
Eğer (hUpdateRes == null) {Hataİşleyici ("yazma dosyası açılamadı."); 
} / / İletişim kutusunda kaynak güncelleştirme listesine ekleyin. 
Sonuç = UpdateResource (hUpdateRes, / / güncelleştirme kaynağı ele RT_DIALOG, / / "AboutBox", iletişim kutusunda kaynağı Değiştir / / iletişim kutusunun adı MAKELANGID (lang_neutral, sublang_neutral), / / nötr dil
     lpResLock, / / ptr kaynak bilgi SizeofResource (Tom_aus_tirol, Xact_s_lastresourcemanager)); / / Kaynak bilgi boyutu. 
 
Eğer (sonuç == false) {Hataİşleyici ("kaynak eklenemedi."); 
} / / AYAK değişiklikleri yazın.exe ve kapatın. 
if (!.EndUpdateResource (hUpdateRes, false)) {Hataİşleyici ("değişiklikleri dosyaya yazılamadı."); 
} / / Temizlemek. 
if (!.FreeLibrary(hExe)) {Hataİşleyici ("çalıştırılabilir ücretsiz olabilir değil."); 
}