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 :

Utilisation d'un executable à l'intérieur d'une dll


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut Utilisation d'un executable à l'intérieur d'une dll
    Bonjour tout le monde,

    Je suis en train d'écrire une dll pour une application et je veut utiliser dans cette dll un executable.
    J'ai testé dans un projet en mode console la commande ShellExecute qui marche très bien mais lorsque j'essaie de l'utiliser dans ma dll, rien ne ce passe.

    Auriez vous une idée de ce que je pourrais faire pour résoudre ce problème ??

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    C'est quoi un exécutable pour vous ?

    Si c'est un processus contenant un ou plusieurs thread d'exécution et ayant des zones de mémoire indépendantes de tout les autres processus, alors c'est un processus et "ShellExecute" en crée un, mais il n'y aucun rapport de contenance de ce processus dans le dll.
    La dll ne fait que lancer un processus.

    Si par exécutable, vous pensez à un fichier d'extension .exe, vous pouvez charger ce fichier dans le processus hébergeant la dll avec un simple LoadLibrary, puis appeler l'un des point d'entrée de ce module (module est le fichier .exe mis en mémoire du processus) grâce à GetProcAdresse.
    Ce n'est pas la dll qui contient l'exe, mais c'est le processus qui héberge le module résultant du chargement du fichier dans son espace d'adressage.

    Bon c'est quel cas ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Dans mon cas, je parle bien d'un fichier d'extension .exe .

    Je souhaiterais pouvoir faire l'équivalent de la commande dos:"Optimizer.exe Prob.mps" ou Optimizer est un programme et Prob un paramètre d'entrée.

    C'est donc vers votre deuxième solution qu'il faut que je me penche. J'espère réussir à faire quelque chose. Merci

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    Comme vous me semblez complètement à la ramasse et que la seconde option demande des connaissances sur ce qu'est un processus et une dll, que vous ne maîtriser manifestement pas. On va dire que c'est la première option.

    Si vous saviez de quoi parle la seconde option vous n'auriez pas parlé d'une commande DOS.

    On fait donc l'assertion que vous voulez lancer un processus à partir de code dans une dll.
    Déjà, ce n’est pas une super idée, car en fonction du type d'exécutable hébergeant la dll, le travail sera plus ou moins complexe.

    On commence par le b.a-ba, "ShellExecute" renvoie quoi comme valeur de retour ?
    Le "CoInitializeEx" du thread a déjà été fait ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup de faire l'effort de me répondre mais j'ai été très poli dans mes messages précédent et ne mérite pas cette condescendance dont vous faites preuves.

    Oh bien sur je n'ai pas votre niveau ni votre expérience mais mérite tout de même le respect.

    Encore une fois, merci de votre aide mais je pense que je vais me débrouiller seul dorénavent ...

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 071
    Points : 12 116
    Points
    12 116
    Par défaut
    "ShellExecute" renvoie quoi comme valeur de retour ?
    Le "CoInitializeEx" du thread a déjà été fait ?
    Pouvez-vous répondre à ces questions ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Le CoInitializeEx n'avait en effet pas été fait.
    La réponse du ShellExecute était .... 42, ce qui signifie que tout fonctionne. En effet, rien ne ce passait parcque lors du test je n'utilisait pas la dernière version compilée de ma dll (Embrouille dans les path de mon IDE) ...

    C'est pour moi ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 28/01/2014, 09h53
  2. Executer une sub a l'intérieur d'une classe ajoutée a une ListBox
    Par Bahaïka dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 29/08/2011, 09h14
  3. [WD14] Faut-il utiliser hAjoute ou executer une requete?
    Par DGuillaume dans le forum HyperFileSQL
    Réponses: 6
    Dernier message: 26/09/2009, 15h04
  4. Réponses: 0
    Dernier message: 22/08/2008, 08h30
  5. Réponses: 6
    Dernier message: 24/02/2005, 09h44

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