Fichier en ressource [Résolu]

Signaler
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
-
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
-
Bonjour à toutes et à tous.

Voilà mon souci. Attention soyez attentifs !
Je souhaite mettre un fichier en ressource d'un exécutable. Facile me direz-vous !
Sauf qu'il y a un hic. A la compilation je sais le faire sans souci.
Le souci est que je souhaite ajouté un fichier en ressource d'un exécutable qui est déjà compilé.
Donc première question, est-ce possible ?
Si oui, comment dois-je m'y prendre ?

Merci d'avance pour votre aide.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"

17 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Tout ce qui se trouve derrière le binaire exécutable est ignoré par le chargeur système, tu peux donc ajouter ce que tu veux.

ciao...
BruNews, MVP VC++
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Mets des "marqueurs" sera plus rapide.
Ex DWORD longueur à la fin et DWORD disant CRC32 au début, sera hyper rapide à extraire et garantira intégrité.

ciao...
BruNews, MVP VC++
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

t'as un autre source qui peut t'aider mais c'est pas de l'ajout mais de la modification
http://www.cppfrance.com/codes/CHANGER-ICONE-EXECUTABLE-CPLUSPLUS-DEV-CPP_25716.aspx
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Tu peux mettre en ressource n'importe quel type de fichier. Personnellement, j'éris le fichier rc manuellement en précisant l'identificateur de la ressource, son type et son chemin. Comme on peut le voir, c'est ultra simple:
ID_001  BINAIRE  "appli.exe"
Je pense que c'est un standard pour tous les compilateurs de ressources sous Windows et Linux.
Sous Windows on fait FindResource(0,<var>"ID_001"</var>,<var>"BINAIRE"</var>); pour trouver la ressource.
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Salut !

24Karas > merci pur les liens j'y regarde de suite.
racpp > comme je l'ai précisé je ne veux pas mettre en resource à la compilation mais dans un exécutable déjà compilé.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Sous Windows il y'a des fonctions pour ça:
BeginUpdateResource
UpdateResource
EndUpdateResource

Puisqu'on ne peut pas modifier un exécutable en cours d'exécution, ces fonctions ne fonctionnent que pour un fichier EXE externe.

Pour Linux, aucune idée.
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Merci racpp, c'est pour un exe externe donc aucun souci de ce côté là !
Merci beaucoup 24Karas, tes liens sont très intéressants et semblent me convenir parfaitement.
Je vous tiens au courant de l'évolution.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
233
Date d'inscription
jeudi 4 juillet 2002
Statut
Membre
Dernière intervention
5 juillet 2008

good
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Il parait que tu as mis ta question dans la catégorie Linux par erreur.
J'attends ta confirmation pour la déplacer vers  Windows.
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Houla oui en effet ! Pardon, j'ai glissé chef ! lol
Merci de me l'avoir précisé.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Il y a un souci que je n'arrive pas à régler pour l'instant.
Dans les exemples que j'ai, on passe une ressource d'un exécutable à un autre exécutable.
Sauf que moi, je veux incorporer un fichier quelconque (binaire) dans un exécutable.
En fait il semblerait qu'il faille que je transforme le fichier à ajouter en une ressource mais je ne sais absolument pas comment faire.
Quelqu'un a une idée ?

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Tu dois mettre le contenu de ton fichier EXE dans un buffer avec
ReadFile(). La fonction UpdateResource() permet de préciser le nom et le
type de la ressource à ajouter. Son 5ème paramètre est le pointeur
(buffer) sur la zone contenant les octets à mettre en ressource. Le
dernier paramètre précise sa taille.
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Ok merci pour l'info racpp !
Ya juste un souci, ce qu'il y a à mettre en ressouce peux faire plusieurs centaines de Mo voir quelques Go.
En fait c'est un fichier complètement quelconque.
C'est pour cela que si je mets tout dans un buffer je vais exploser la mémoire ! lol

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
J'ai peut-être une autre idée.
Si je rajoute moi-même en écrivant tout simplement dans le fichier exécutable pour y rajouter un fichier quelconque après les données binaires. Est-ce que cela ne gênera pas l'exécution ?

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Ah parfait ! Merci BruNews, je pense que je vais donc adopté cette technique.
Y a t'il un moyen de savoir par le code, la taille de données de l'exécutable, une fois que j'aurais ajouté un autre fichier à la suite ?

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"
Messages postés
1403
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 janvier 2009
3
Lol ! J'avais même pas pensé à mettre la longueur à la fin !
C'était tout bête pourtant.
J'ai tout ce qu'il me faut maintenant.
Merci à vous tous de m'avoir aidé.

YOYO, @+.
"L'intelligence c'est comme un parachute, quand on en n'a pas...on s'écrase !"