IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

Un .exe en ressource ?


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut Un .exe en ressource ?
    Bonjour,
    En fait j'ai deux fichier exe l'un executant une tache specifique et l'autre servant de logiciel(avec une interface etc) je voudrait savoir comment integrer le 1er exe dans le second de maniere a ce que mon logiciel puisse (via une demande dans le menu ( ex : creer un exe..)) generer le 2eme exe .
    comment integrer le 2eme exe dans le 1er ?

  2. #2
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Bull_ Voir le message
    Bonjour,
    En fait j'ai deux fichier exe l'un executant une tache specifique et l'autre servant de logiciel(avec une interface etc) je voudrait savoir comment integrer le 1er exe dans le second de maniere a ce que mon logiciel puisse (via une demande dans le menu ( ex : creer un exe..)) generer le 2eme exe .
    comment integrer le 2eme exe dans le 1er ?
    Ta demande est confuse. Tu veux créer un .exe ou tu veux intégrer un .exe ?

    pour intégrer : system() est portable. il existe d'autres fonctions propres à chaque système.

    pour générer :

    fabriquer le code source (.c), le compiler (par exemple gcc -> .o) et faire l'édition de lien (ld -> .exe)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Je n'ai pas bien compris ta reponse mais je vais tenté d'éclaircire ce que je demande :
    En fait le but est a partir du logiciel que j'ai creer de generer un exe (que j'ai lui aussi creer) par exemple l'utilisateur ferai : fichier->creer un exe
    et un exe apparaitrait sur le bureau donc ce que je veut c :
    -Avoir un seul programme capable de creer un fichier test.exe qui doit etre contenue dans ce programme ( pas de dll ou je ne sais quoi )
    la question est donc
    -comment integrer un exe dans un autre
    -comment creer le exe une fois quil est integrer (sur demande de l'utilisateur : fichier -> creer un exe)
    merci pour ta reponse

  4. #4
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je pense que le P.O. veut savoir s'il est possible d'intégrer un exe comme fichier ressource d'un exécutable quelconque et de l'extraire à la demande dans un répertoire quelconque pour l'exécuter ensuite.
    Si c'est celà la réponse est oui.
    [edit] maintenant que j'ai lu la précision, Visual Studio intègre très bien les ressources, je pense qu'il en est de même pour les autres IDE.
    [/edit]

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Oui Trap D C ce que je cherche a faire mais malgrer de longue recherche sur internet je n'ai rien trouver a ce sujet, si tu sais comment faire ou que tu a un lien pouvant maider ta reponse est la bienvenue , merci d'avoir eclairci mes parole

  6. #6
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Bull_ Voir le message
    Je n'ai pas bien compris ta reponse mais je vais tenté d'éclaircire ce que je demande :
    En fait le but est a partir du logiciel que j'ai creer de generer un exe (que j'ai lui aussi creer) par exemple l'utilisateur ferai : fichier->creer un exe
    et un exe apparaitrait sur le bureau donc ce que je veut c :
    -Avoir un seul programme capable de creer un fichier test.exe qui doit etre contenue dans ce programme ( pas de dll ou je ne sais quoi )
    la question est donc
    -comment integrer un exe dans un autre
    -comment creer le exe une fois quil est integrer (sur demande de l'utilisateur : fichier -> creer un exe)
    merci pour ta reponse
    Tu peux essayer d'écrire en français, parce qu'il y a tellement de fautes que tu en deviens illisible, désolé. Essaye de ne pas confondre les participes passés (-é) et les infinitifs (-er).

    Et explique la différence entre générer et créer.

  7. #7
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Pour intégrer l'exe dans ton exe, il faut lire la doc de ton IDE. Celà se fait peut-être avec un makefile mais là, je n'y connais rien.
    Pour extraire l'exe, il faut récupérer la ressource qui est répérée par un ID et tu recopies cette ressource comme un fichier binaire quelconque, tu lui donnes la bonne extension pour qu'il soit reconnu comme un exe valide et tu lance l'ordre d'exécution. Maintenant, comme c'est potentiellement hyper dangereux, il est possible que certains systèmes l'empêchent, je ne sais pas trop.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Désolé pour les fautes,
    Génerer = créer synonymes pour éviter les repétitions.

    Bon j'ai essayé de corrigé les fautes


    Je n'ai pas bien compris ta réponse mais je vais tenté d'éclaircire ce que je demande :
    En fait le but est a partir du logiciel que j'ai créé de générer un exe (que j'ai lui aussi créé) par exemple l'utilisateur ferai : fichier->créer un exe
    et un exe apparaîtrait sur le bureau donc ce que je veut c :
    -Avoir un seul programme capable de créer un fichier test.exe qui doit être contenue dans ce programme ( pas de dll ou je ne sais quoi )
    les questions sont donc :

    -Comment intégrer un exe dans un autre ?

    -Comment créer le exe une fois qu’il est intégré (sur demande de l'utilisateur : fichier -> créer un exe) ?

    merci pour ta réponse

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut J'ai trouver comment intégrer le exe
    Bon je crois avoir trouver comment intégrer le fichier exe dans l'autre il suffit d'ajouter un fichier ressource.rc contenant la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESSOURCE RCDATA fichier.exe
    mon premier exe prend alors la taille (1er + second exe) donc je pense que fichier.exe à bien été intégré.
    mais je ne trouve pas comment l'extraire ensuite (ressortir fichier.exe de mon programme).
    Si vous avez une idée ...

  10. #10
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Tu dois lui donner un ordinal ou un nom...

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    mais il a deja un nom ( RESSOURCE ),
    non ?

  12. #12
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Ah oui, tu as raison (évite un nom pareil à l'avenir).

    Pour le charger, tu dois utiliser FindResource(), LoadResource() et LockResource().

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bon comme je l'ai dit j'ai trouver comment integrer le fichier exe.
    j'ai ensuite chercher la doc des fonction que tu ma donné sur msdn
    puis j'ai "bidouiller" ( on peut pas appler sa autrement a mon avis vu mon manque d'experience en programmation avec les fonction windows) ce bout de code sensé retourner un pointeur vers le premier bit du exe :

    Fichier ressource.rc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RESSOURCE1 RCDATA console.exe
    Fichier main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <stdio.h>
    #include <windows.h>
    
    #define RESSOURCE1 102
    
    int main()
    {
        HGLOBAL hgbl;
        HRSRC hrsrc;
        LPVOID lpvoid;
    
        hrsrc = FindResource(GetModuleHandle(NULL),MAKEINTRESOURCE(RESSOURCE1),"RCDATA");
        hgbl = LoadResource(0, hrsrc);
        lpvoid = LockResource(hgbl);
    
        printf("%s",hrsrc);
    	return 0;
    }
    le printf retourne null donc la fonction à échouer. Si quellqu'un peut m'aider ...

  14. #14
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    1. Sois plus modulaire. Teste le retour de chaque fonction.
    2. GetLastError()/FormatMessage() ?
    3. %p, pas %s.

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Bah en fait sa change pas grand chose =(
    toute les fonctions retourne NULL (ou 000000 pour *p)

    La fonction GetLastError() retourne 0000714. et alors ? à quoi sa correspond ?

    Et quand a FormatMessage() je ne sais pas comment m'en servir trop d'argument je ne sais pas quoi mettre.

  16. #16
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Citation Envoyé par Bull_ Voir le message
    Bah en fait sa change pas grand chose =(
    toute les fonctions retourne NULL (ou 000000 pour *p)
    Et si ce n'était pas NULL, que ce passerait-il d'après toi?
    Comportement indéfini, risque de Crash...

    La fonction GetLastError() retourne 0000714. et alors ? à quoi sa correspond ?
    http://msdn2.microsoft.com/en-us/library/ms681381.aspx
    1812: ERROR_RESOURCE_DATA_NOT_FOUND
    The specified image file did not contain a resource section.

    Et quand a FormatMessage() je ne sais pas comment m'en servir trop d'argument je ne sais pas quoi mettre.
    http://msdn2.microsoft.com/en-us/library/ms681381.aspx
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DWORD err = GetLastError();
    TCHAR msg[80];
    FormatMessage(
     FORMAT_MESSAGE_FROM_SYSTEM, NULL, err, 0,
     msg, ARRAYSIZE(msg), NULL
     );

  17. #17
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #include <stdio.h>
    #include <windows.h>
    
    #define RESSOURCE1 102
    
    int main()
    {
        HGLOBAL hgbl;
        HRSRC hrsrc;
        LPVOID lpvoid;
    
        hrsrc = FindResource(GetModuleHandle(NULL),MAKEINTRESOURCE(RESSOURCE1),"RCDATA");
        printf("%p\n",GetLastError()); //1813 ERROR_RESOURCE_TYPE_NOT_FOUND : The specified resource type cannot be found in the image file. Conclusion je ne sais pas me servir de cette fonction  ou je l'utilise mal quelqu'un peut m'aider ? =(
        hgbl = LoadResource(0, hrsrc);
        printf("%p\n",GetLastError()); //1812 ERROR_RESOURCE_DATA_NOT_FOUND : The specified image file did not contain a resource section. (Bien que si FindResource n'a pas marcher sa me semble logique qu'il ne trouve pas la ressource ...)
        lpvoid = LockResource(hgbl);
        printf("%p\n",GetLastError()); //1812 idem
    
    	return 0
    Un peut d'aide please

  18. #18
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Es-tu sûr de builder correctement ton exécutable pour que la ressource soit bien dedans ?

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 17
    Points : 7
    Points
    7
    Par défaut
    Eh bien je ne fait aucun traitement special au niveau de la compile je l'integre juste via
    ressource.rc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RESSOURCE1 RCDATA monfichier.exe
    Et vu que à la base jai le premier exe ( à integrer) qui fait 15.2ko et le second (qui va contenir l'autre) de 15 ko. Et que à la fin j'obtient un fichier de 30.2ko je suppose que sa à été integrer ...

  20. #20
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Attends, c'est quoi ce #define dans ton source C ou C++ ?
    Si le #define n'est pas inclus dans le fichier .rc, tu as un problème!

    La ressource va être définie en tant que ressource nommée "RESSOURCE1", alors que tu cherches à l'utiliser en tant que ressource numérotée 102!

Discussions similaires

  1. py2exe et exe dans ressources
    Par c_jm2 dans le forum Py2exe
    Réponses: 2
    Dernier message: 18/05/2009, 14h09
  2. utilisation d'un exe dans ressources
    Par philippe123 dans le forum VB.NET
    Réponses: 1
    Dernier message: 17/06/2008, 09h37
  3. Ecriture et lecture des ressources sur une .exe
    Par LeRoi dans le forum Delphi
    Réponses: 8
    Dernier message: 06/10/2006, 22h46
  4. [VB.NET 2.0] Utiliser un fichier EXE inclu comme ressource
    Par MatP dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/08/2006, 17h29
  5. [ressources] Changer icone exe
    Par eric30eric dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 06/05/2005, 09h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo