Copier une ressource binaire sur le disque dure [Résolu]

Signaler
Messages postés
21
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
16 janvier 2006
-
Messages postés
21
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
16 janvier 2006
-
Bonjours tout le monde !!!

Je suis assez embêté car je débute en C++ et je suis bloqué depuis 1 semaine. Si quelqu' un pourrait m' aider ce serait vraiment cool !!!

Voilà, j' ai une ressource binaire dans mon exe et je voudrais tout simplement la copier sur le disque.

J' ai cherché en vain avec "FILE, fopen etc..." en choisissant bien le mode écriture en binaire, et bien cela ne marche pas.

J' espère que vous saisissez mon souci.

Bye...

4 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
Salut,

Voici un exemple:



// Déclaration des variables:

HANDLE hFichier;

DWORD taille;

LPVOID pointeur;

HGLOBAL hRessource;

HRSRC Maressource;

DWORD ecrits;

// Trouver la ressource:

Maressource=FindResource(0,MAKEINTRESOURCE(IDR_BIN),"RT_RCDATA");

// Déterminer sa taille:

taille=SizeofResource(0,Maressource);

// Charger la ressource en mémoire:

hRessource=LoadResource(0,Maressource);

// Obtenir un pointeur sur cette zone mémoire:

pointeur=LockResource(hRessource);

// Créer le fichier destination:


hFichier=CreateFile("C:\\monfichier.bin",GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);

// Copier la ressource dans le fichier:

WriteFile(hFichier,pointeur,taille,&ecrits,0);

// Fermer le fichier:

CloseHandle(hFichier);



Voilà. J'espère n'avoir rien oublié.
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
21
DLL HOOK EN RESSOURCE BINAIRE DU PROG (WIN32)
http://www.cppfrance.com/code.aspx?id=25450

tu suis le principe.

ciao...
BruNews, MVP VC++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
12
Si, j'ai oublié d' ajouter FreeResource() après CloseHandle() pour libérer la mémoire allouée à la ressource chargée:

FreeResource (hRessource);
Messages postés
21
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
16 janvier 2006

Merci beaucoup !!!



Bye...