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 :

Exécution d'un programme


Sujet :

Windows

  1. #1
    Membre du Club

    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Points : 56
    Points
    56
    Par défaut Exécution d'un programme
    J'ai écrit un programme en C qui a besoin de lancer Google Earth.
    Avec WinExec ou CreateProcess pas de problème, mais cela n'est pas c e que je veux.
    Je voudrais que le programme soit afficher dans une de mes fenêtres enfant.
    Comment cela est-il possible ?

    Merci d'avance.
    Kenavo

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Impossible (ou du moins, impossible à faire propre) si le programme n'est pas de base prévu pour cela (par exemple, via Object Linking and Embedding (OLE)).
    Je doute que Google Earth soit prévu pour ça; tu aurais plus vite fait d'utiliser un contrôle WebBrowser connecté à Google Maps...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Bonjour,

    Je ne maîtrise pas du tout la programmation Windows, mais j'ai une question : lorsque tu crées un économiseur d'écran (écran de veille), tu as la possibilité de voir l'aperçu dans la fenêtre de sélection de l'écran de veille. Ce n'est pas possible d'utiliser le même type de code avec les API CopyRect ? Je pose peut-être (et sûrement) une énormité comme question.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si j'en crois cette page, les économiseurs d'écran sont spécifiquement programmés pour dessiner là où on le leur dit de dessiner, il n'est donc pas possible de s'en inspirer pour "héberger" un exécutable arbitraire.

    Edit: Voir aussi:
    Is it legal to have a cross-process parent/child or owner/owned window relationship?
    Citation Envoyé par Raymond Chen
    And they become near-impossible to manage if one or both of the windows involved is unaware that it is participating in a cross-process window tree. (I often see this question in the context of somebody who wants to grab a window belonging to another process and forcibly graft it into their own process. That other process was totally unprepared for its window being manipulated in this way, and things may stop working. Indeed, things will definitely stop working if you change that other window from a top-level window to a child window.)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Merci pour ta réponse. Je me disais bien que cela me semblait trop simple comme idée.
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  6. #6
    Membre du Club

    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Points : 56
    Points
    56
    Par défaut
    Finalement ce n'était pas trop difficile :

    Rechercher la fenêtre Google Earth par sa classe, dans mon cas : Qt5QWindowIcon
    Pour cela lancer l'outil SPY de VisualStudio et faire :

    Code C : 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
    static void Main_OnCreate(HWND __hWnd)
    {
        hGoogleEarth = FindWindow("Qt5QWindowIcon",NULL) ;
        SetParent(hGoogleEarth,hMainWindow) ;
     
        return ;
    }
     
    static void Main_OnDestroy(HWND __hWnd)
    {
        SetParent(hGoogleEarth,NULL) ;
     
        DeleteObject(hMainFont) ;
        PostQuitMessage(0) ;
     
        return ;
    }
    Pensez également à traiter cette fenêtre dans WM_SIZE.

    Quand vous fermez votre fenêtre, message WM_CLOSE, ou WM_DESTROY pensez à faire :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
        SetParent(hGoogleEarth,NULL) ;

    Sans quoi il faudra jouer avec le gestionnaire des tâches pour arrêter Google Earth, c'est pas très clean.

    C'est tout.

  7. #7
    Membre du Club

    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Points : 56
    Points
    56
    Par défaut
    Pour FrenchSting

    Une autre possibilié était que mon programme lance Google Earth, puis se minimise de façon à ce que je puisse faire une capture d'écran (BitBlt) car je ne veux que voir le résultat du fichier KML que crée mon programme.

    Il s'agit d'un programme qui me calcule les trajets de mes interventions de dépannage.
    Je calcule les trajet, je crée un fichier avec les horaires et je visualise en créant un KML.

    Source disponible.

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    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 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je me demande ce qui se passera le jour ou tu lanceras ton programme alors qu'un autre programme sous QT5 tourne déjà...
    Et même si tu contournes cette partie-là du problème, tu n'en es pas moins en train de jongler avec des tronçonneuses.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Membre du Club

    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2019
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2019
    Messages : 7
    Points : 56
    Points
    56
    Par défaut
    Ca marche très bien et Google Earth lance même Google Maps tout en etant une fenêtre enfant de mon programme.

Discussions similaires

  1. Réponses: 5
    Dernier message: 01/02/2006, 21h55
  2. Réponses: 7
    Dernier message: 24/10/2005, 23h10
  3. Problème lors de l'exécution de mes programmes
    Par darkmalak01 dans le forum Langage
    Réponses: 7
    Dernier message: 27/09/2005, 18h35
  4. Réponses: 1
    Dernier message: 05/09/2005, 11h37
  5. Exécution d'un programme hors session
    Par skywaukers dans le forum Langage
    Réponses: 3
    Dernier message: 07/07/2005, 10h31

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