Fichier en ressource

Résolu
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 14 janv. 2007 à 11:56
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 - 15 janv. 2007 à 10:45
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 janv. 2007 à 10:17
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++
3
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
15 janv. 2007 à 10:35
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++
3
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
14 janv. 2007 à 12:29
0
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
14 janv. 2007 à 12:32
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
14 janv. 2007 à 12:49
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.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 janv. 2007 à 13:00
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 !"
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
14 janv. 2007 à 13:14
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.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 janv. 2007 à 13:17
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 !"
0
24Karas Messages postés 233 Date d'inscription jeudi 4 juillet 2002 Statut Membre Dernière intervention 5 juillet 2008
14 janv. 2007 à 13:24
good
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
14 janv. 2007 à 13:29
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.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 janv. 2007 à 13:31
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 !"
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 janv. 2007 à 14:05
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 !"
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
14 janv. 2007 à 14:23
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.
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
14 janv. 2007 à 15:30
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 !"
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
15 janv. 2007 à 09:10
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 !"
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
15 janv. 2007 à 10:21
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 !"
0
yoyo269 Messages postés 1403 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 11 janvier 2009 2
15 janv. 2007 à 10:45
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 !"
0
Rejoignez-nous