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

Qt Discussion :

Afficher la fenêtre d'une application lancée en tant que processus


Sujet :

Qt

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut Afficher la fenêtre d'une application lancée en tant que processus
    Bonjour tout le monde, j'ai une application qui lors de son démarrage lance une 2ème application en tant que processus. Pour cela j'ai utilisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QProcess::startDetached("UpdaterApp.exe");
    .
    Dans mon menu j'ai une icone depuis laquelle je peux lancer cette même 2ème application (qu'est une application de mise à jour de base de donné).
    Avant de lancer l'application, je fais un test si elle est déjà lancée ou pas.
    Dans le cas où elle est lancée, je désire afficher la fenêtre (dialog) de l'application.
    Est ce quelqu'un pourrait me dire si c'est faisable et si oui comment faire.
    Merci d'avance pour votre collaboration.
    Cordialement

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Bonjour,

    A priori tu ne peux pas contrôler directement les widgets d'une application par une autre... Par contre tu peux dire à ta seconde application qu'elle a la main et qu'elle doit s'afficher au premier plan...
    Et ce tu peux le faire grâce à une petite communication inter-pocessus avec des sockets par exemple...

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    Merci de votre réponse, en fait j'ai bcp cherché et j'ai trouvé que c'est pas possible de contrôler ou d'appeler la 1ère application qui est deja en cours.
    Mais est ce que vous pouvez me détailler davantage votre solution que ce soit par du code et/ou exemple.
    Merci encore.
    Cordialement

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 705
    Points
    705
    Par défaut
    Il faut utiliser le module "NetWork" et plus particulierement les classes QTcpSocket & QTcpServer...

    La seconde application ouvre un socket serveur sur un port prédéfini dès son démarrage.
    Quand la première appli veut communiquer avec la seconde, elle ouvre un socket client sur le même port : Deux cas sont alors possible. Soit la connexion échoue ce qui signifie que la seconde application n'est pas en cours d'exécution, soit la connexion réussie et la premiere appli peut donner à la 2e des infos sous forme de QByteArray ou de char* (méthode "write" de QIODevice)...

    Voir les exemples du module Network dans la doc Qt...

  5. #5
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Salut
    Citation Envoyé par mercure07 Voir le message
    Merci de votre réponse, en fait j'ai bcp cherché et j'ai trouvé que c'est pas possible de contrôler ou d'appeler la 1ère application qui est deja en cours.
    Que veut tu dire par "contrôler ou d'appeler"?

  6. #6
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    C'est contrôler la fenêtre de l'application et l'appeler pour l'afficher

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Vue que tu le lance par process, peut être que cela peut t'intéresser :

    http://qt.developpez.com/faq/?page=q...ir_application
    http://qt.developpez.com/faq/?page=q...ation_Qprocess

  8. #8
    Membre expérimenté
    Avatar de FloMo
    Homme Profil pro
    Freelance iOS
    Inscrit en
    Juillet 2004
    Messages
    726
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Freelance iOS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 726
    Points : 1 511
    Points
    1 511
    Par défaut
    Si chaque application est développée par tes soins, tu peux utiliser QSharedMemory.

    Exemple ici

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par FloMo Voir le message
    Si chaque application est développée par tes soins, tu peux utiliser QSharedMemory.

    Exemple ici
    Ce que j'ai compris:
    il veut manipuler l'ihm (aficher caher, ...) de l'ihm lancé par process.
    Je ne pense pas que ce soit aussi simple avec qsharedmemory, car on veut donner des ordres. Passer par des pipe ou par un soket et pour moi une meilleur solution.

    S'il veut partager de grosse donné entre appli, alors qsharedmemory est surement une solution intéressante.

  10. #10
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Ce que j'ai compris:
    il veut manipuler l'ihm (aficher caher, ...) de l'ihm lancé par process.
    Je ne pense pas que ce soit aussi simple avec qsharedmemory, car on veut donner des ordres. Passer par des pipe ou par un soket et pour moi une meilleur solution.
    pipe, socket, shared memory ne sont que des mecanismes d'IPC permettant a 2 applications de discuter. Mais pour discuter, il faut etre deux.

    Si l'application cliente n'est pas developpee par lui, aucun de ces mecanismes ne lui sera utilise vu que l'appli n'a pas ete codee pour etre pilotee.

    Il faut passer par le systeme de fenetrage pour la manipuler en simulant des actions utilisateurs. Sous Windows, AutoIt peut faciliter cela. Mais cela aussi de l'application cliente et du toolkit GUI qu'elle utilise.

  11. #11
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par Aurelien.Regat-Barrel Voir le message
    Si l'application cliente n'est pas developpee par lui, aucun de ces mecanismes ne lui sera utilise vu que l'appli n'a pas ete codee pour etre pilotee.
    Si il ne l'as pas développé, sont appli à surement une manière de communiquer, au moins par entrée/sortie standard (exemple de l'exe cvs). Sinon, oui il est mal barré.

    Citation Envoyé par Aurelien.Regat-Barrel Voir le message
    Il faut passer par le systeme de fenetrage pour la manipuler en simulant des actions utilisateurs. Sous Windows, AutoIt peut faciliter cela. Mais cela aussi de l'application cliente et du toolkit GUI qu'elle utilise.
    C'est facile à utilisé?

  12. #12
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Si il ne l'as pas développé, sont appli à surement une manière de communiquer, au moins par entrée/sortie standard (exemple de l'exe cvs). Sinon, oui il est mal barré.
    Comme il parle d'un dialogue, j'ai pas pense a une application console. Si c'est le cas, en effet piloter l'appli via QProcess en laissant Qt rediriger les flux stdin/stdout via des pipes sera tres simple.

    Citation Envoyé par Mongaulois Voir le message
    Si il ne l'as pas développé, sont appli à surement C'est facile à utilisé?
    Je n'ai utilise Auto-it qu'en temps qu'appli normale, et oui c'est plutot simple a utiliser. L'avantage d'Auto-it, c'est que tu peux l'embarquer dans ton appli. J'ai jamais teste, mais je pense que ca doit rester beaucoup plus simple que de faire tout le boulot via du code Win32.

Discussions similaires

  1. Afficher la fenêtre de l'application BO dans une page web
    Par stujava dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 04/02/2015, 13h07
  2. Lancer une application vb6 en tant que services ?
    Par real_achilles dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/11/2009, 14h12
  3. Afficher l'interface d'un exécutable lancé en tant que Service
    Par romulus dans le forum Windows Serveur
    Réponses: 8
    Dernier message: 07/01/2009, 09h54
  4. Réponses: 2
    Dernier message: 06/10/2008, 12h20
  5. Comment afficher des JPEG dans une application Delphi ?
    Par Bouguennec dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/09/2005, 21h18

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