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

C++Builder Discussion :

ouvrir un .exe avec ShellExecute en tant que fenetre Fille


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut ouvrir un .exe avec ShellExecute en tant que fenetre Fille
    bonsoir,

    tout d'abord je voudrais m'excuser si ma question est stupide mai sincèrement je ne trouve pas de réponse a celle ci donc je voulais savoir comment faire pour exécuter un programme externe en tant que fenêtre fille avec ShellExecute

    pour être plus précis je voudrais que le fichier.exe s'affiche a l’intérieur de la fenêtre(Form1) principal

    voici le code en question ou je me suis arreter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute(Form1, "open", "D://ProjetBorland//aplic//applic2//fichier.EXE", NULL, NULL, SW_SHOWNORMAL);
    merci a vous,

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    confusion / et \ dans les chemins
    Le Premier pour le monde linux ou web
    le Second pour windows

    confusion / et \ comme caractère d'échappement
    / est un caractère normal
    \ est utilisé comme caractère d'échappement

    conclusion remplace les // par \\
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    confusion / et \ dans les chemins
    Le Premier pour le monde linux ou web
    le Second pour windows

    confusion / et \ comme caractère d'échappement
    / est un caractère normal
    \ est utilisé comme caractère d'échappement

    conclusion remplace les // par \\
    Merci a toi ShaiLeTroll je savais pas pourtant les 2 solutions marche pareil mai je vais quand même suivre ton conseil merci, ceci dis je ne sais toujours pas si on peut ouvrir un fichier .exe externe en tant que fenêtre fille

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    Utilise CreateProcess avec le Handle retourné tu pourras utiliser un EnumWindows ou CreateToolhelp32Snapshot pour trouver la fenêtre voulu puis faire un SetParent

    Sinon, avec ShellExecute, FindWindow et SetParent c'est possible, mais le contexte d'execution est plus "risquée"


    Afficher une autre application dans un exe
    Fenêtre dans une autre?
    [D7] Ouvrir Excel dans une form
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 188
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Utilise CreateProcess avec le Handle retourné tu pourras utiliser un EnumWindows ou CreateToolhelp32Snapshot pour trouver la fenêtre voulu puis faire un SetParent

    Sinon, avec ShellExecute, FindWindow et SetParent c'est possible, mais le contexte d'execution est plus "risquée"
    oulaaa!!! sa a l'aire plus compliquer que je le pensais je vais faire des recherche sur CreateProcess pour voir comment sa se place dans le code mais sinon tu entend quoi par plus "risquée"?

    en tous cas je te remercie de m'avoir répondu je teste tout ça et je te tien au courant

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    sa a l'aire ou cela à l'air ?

    Si l'on devait s'arrêter à chaque obstacle, tu as en plus choisi le C++, c'est un langage très utilisé mais pas le plus simple par rapport au Visual Basic ou au Delphi !

    Le CreateProcess fait que ton programme est propriétaire de l'exe lancé, si on arrête ton programme, normalement, cela arrête l'autre aussi (à tester selon les options de Startup), tu dois d'ailleurs pouvoir empêcher sa fermeture plus facilement car tu as déjà tous les identifiants utilies dans lpProcessInformation et tu peux en détourner les Pipes (pratique pour une application console)

    le ShellExecute lance le programme mais c'est l'explorer le propriétaire de l'exe, comme le programme est indépendant, il faut faire gaffe à ce que l'on ne ferme pas le programme alors que tu as détourné la fenêtre, violation d'accès assuré sinon !
    Mais tu dois pouvoir aussi masquer l'exe pour éviter qu'on le ferme, c'est juste plus pénible car il faut retrouver les handles nécessaires aux API

    Les deux méthodes peuvent provoqués des Violations d'Accès, la modification du Parent via _WINDOWS_::SetParent est une bidouille !
    Le plus propre serait que ton programme appelé fournisse un Control ActiveX (DLL) le contexte d'execution sera différent (partage de la mémoire grandement facilité)
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. Réponses: 22
    Dernier message: 20/05/2008, 10h25
  2. Réponses: 8
    Dernier message: 16/11/2006, 10h15
  3. ouvrir un .exe avec un .swf
    Par philkeeper dans le forum Flash
    Réponses: 24
    Dernier message: 17/10/2006, 10h14
  4. Problème de bord avec image en tant que lien
    Par gids01 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 16/05/2006, 20h03
  5. [LG] Inversion avec une boucle tant que
    Par erickson dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2005, 15h15

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