Copier une ressource binaire sur le disque dure

Résolu
cyber_securite Messages postés 21 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 16 janvier 2006 - 31 juil. 2005 à 20:59
cyber_securite Messages postés 21 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 16 janvier 2006 - 1 août 2005 à 18:13
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

racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
1 août 2005 à 01:03
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é.
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
31 juil. 2005 à 23:12
DLL HOOK EN RESSOURCE BINAIRE DU PROG (WIN32)
http://www.cppfrance.com/code.aspx?id=25450

tu suis le principe.

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

FreeResource (hRessource);
0
cyber_securite Messages postés 21 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 16 janvier 2006
1 août 2005 à 18:13
Merci beaucoup !!!



Bye...
0
Rejoignez-nous