Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment faire pour que d'autres logiciels s'ouvrent depuis mon programme ?

Sujet résolu
Anonyme
    17 avril 2008 à 20:00:47

    Bonjour à tous :)
    J'ai mon programme codé avec Qt. J'aimerais savoir comment faire pour que d'autres logiciels puissent s'ouvrir depuis mon programme.
    Par exemple, j'aimerais que lorsque l'utilisateur clique sur Aide, le programme de lecture des PDF s’ouvre en lisant le fichier d'aide. Ou, lorsque l'utilisateur clique sur "Contacter l'auteur", la messagerie s'ouvre avec mon adresse.
    En fait, j'aimerais ouvrir le programme par défaut, pas un spécifique, pour que ça marche chez tout le monde mais je sèche complètement pour faire ça :( .
    Merci d'avance :) !
    • Partager sur Facebook
    • Partager sur Twitter
      17 avril 2008 à 20:03:17

      Pour envoyer les e-mail c'est comme en html :
      <a href=\"mailto:tonadresse@neuf.fr\">Contact</a>

      Pour communiquer avec d'autre logiciel tuas QProcess.
      • Partager sur Facebook
      • Partager sur Twitter
      :)
      Anonyme
        17 avril 2008 à 20:09:18

        J'ai déjà essayé pour le <a..></a> mais ça ne marche pas dans les QActions
        Je vais voir les QProcess, merci :)
        • Partager sur Facebook
        • Partager sur Twitter
          17 avril 2008 à 20:10:20

          Tu est sur montre car normalement le html passe partout (ou presque :p )
          • Partager sur Facebook
          • Partager sur Twitter
          :)
          Anonyme
            17 avril 2008 à 20:14:30

            C'est pour un menu, je créé mon objet QAction comme ça :
            m_contact = new QAction("<a href=\"mailto:monadresse@neuf.fr\">Contacter l'auteur</a>", m_aide);
            


            (m_aide est le menu d'aide)
            • Partager sur Facebook
            • Partager sur Twitter
              17 avril 2008 à 20:21:11

              m_contact = new QAction(QString("<a href=\"mailto:monadresse@neuf.fr\">Contacter l'auteur</a>"), m_aide);
              tente ça
              • Partager sur Facebook
              • Partager sur Twitter
              :)
              Anonyme
                18 avril 2008 à 11:20:09

                Ca ne marche pas non plus, on voit le html comme du texte dans le menu :(
                Pour les QProcess, il faut indiquer le chemin du programme mais moi je voudrais que ce soit le programme par défaut qui s'ouvre (pour que ça marche chez tout le monde), tu sais comment faire ça ?
                • Partager sur Facebook
                • Partager sur Twitter
                  18 avril 2008 à 12:36:30

                  Mais en faite c'est où que tu veux le metre?
                  Car si c'est dans une fenêtre comme c'est dans la plus part des cas ça fonctionne sauf si tu as mis \n donc ça tu le remplace par <br>
                  En revanche si tu essaye de mettre sa dans un menu déjà c'est pas top et puis la je pense qu'il te faudra faire un slot perso pour que ça fonctionne.
                  Bref moi ce que je te conseil c'est de faire une QDialog et de mettre tout ça.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  :)
                    18 avril 2008 à 13:19:25

                    tu as essayé avec addHtml(ton code html) ou insertHtml?

                    sinon pour ouvrir le programme par defaut, il suffit d'ouvrir le fichier, ca devrait lancer le programme associé par defant, non?
                    je crois qu'on trouve ca de ce coté ci:

                    QFileDialog::getOpenFileNames
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      18 avril 2008 à 15:14:29

                      Citation : moii

                      Mais en faite c'est où que tu veux le metre?
                      Car si c'est dans une fenêtre comme c'est dans la plus part des cas ça fonctionne sauf si tu as mis \n donc ça tu le remplace par <br>
                      En revanche si tu essaye de mettre sa dans un menu déjà c'est pas top et puis la je pense qu'il te faudra faire un slot perso pour que ça fonctionne.
                      Bref moi ce que je te conseil c'est de faire une QDialog et de mettre tout ça.



                      En fait, j'ai un menu "?". Dedans, j'ai le QAction "Contacter l'auteur". Je voudrais que, quand l'utilisateur clique dessus, la messagerie par défaut s'ouvre avec mon adresse. Dans ce même menu, j'ai aussi un QAction "Aide". Je voudrais que lorsque l'utilisateur clique dessus, le programme de lecture des pdf par défaut s'ouvre en lisant le fichier d'aide que j'aurais préparé.
                      (Si c'est pas clair, il faut me le dire :-° )

                      Citation : sfmaniaque

                      tu as essayé avec addHtml(ton code html) ou insertHtml?
                      sinon pour ouvrir le programme par defaut, il suffit d'ouvrir le fichier, ca devrait lancer le programme associé par defant, non?
                      je crois qu'on trouve ca de ce coté ci:
                      QFileDialog::getOpenFileNames


                      Je vais essayer pour le addHtml. Par contre pour la suite, je pense pas. C'est marqué dans le cour que QFileDialog::getOpenFileNames ne sert qu'à donner le chemin du fichier à ouvrir. En plus, je ne veux pas que l'utilisateur choisisse le fichier (ce à quoi sert getOpenFileNames), mais je veux ouvrir mon fichier d'aide.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 avril 2008 à 18:40:56

                        Moi je te conseil de faire dans ton menu "?" un "A propos" et qui ouvre une QDialog ou QMessageBox::about();
                        Et ici tu y place ton adresse en html.
                        La plus part des logiciels fond comme ça.

                        Voilà ma solution.
                        • Partager sur Facebook
                        • Partager sur Twitter
                        :)
                        Anonyme
                          18 avril 2008 à 19:06:56

                          Disons que c'est une solution mais c'est pas tellement ce que je veux faire. Je vais mettre ça en attendant.
                          Pour les logiciels par défaut quelqu'un a une idée ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            20 avril 2008 à 20:18:53

                            UP, personne n'a une idée ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              21 avril 2008 à 12:09:48

                              Tu peux utiliser un appel systeme mais ce ne sera pas portable.
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                21 avril 2008 à 16:16:29

                                J'y pensais, mais mon but est le portable justement =/
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  21 avril 2008 à 17:00:19

                                  system est dans la norme et portable au plus haut point.
                                  Par contre, c'est la commande éxécuté qui doit être portable pour que le tout le soit.
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    21 avril 2008 à 17:20:11

                                    Est-ce qu'il y a une commande pour system qui permet d'ouvrir le programme par défaut pour lire les pdf/programme par défaut de messagerie ?
                                    (si tu veux pas tout expliquer donne moi un lien :) )

                                    [EDIT] : Pour ceux qui veulent : sous windows :
                                    system("start fichier.pdf");
                                    

                                    Sous les unix, faut préciser le programme.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      22 avril 2008 à 23:41:40

                                      Pour ouvrir le programme par défaut chez chacun, si tu programme sous windows(linux j'en ai aucune idée, je suis pas assez experimenté)

                                      1)renseigne toi sur les methode de l,api windows (RegOpenKey et RegQueryValue)
                                      cela servira pour le 2 ^^

                                      2)Va voir dans le registre les applications par défaut.Il faudra surment que tu te renseigne un peu, moi je ne peut t'aider que sur des sujet tres élémentaires...

                                      par exemple, HEKY_classes_root contient les applications par defaut pour tous tes fichiers qui en ont un(mp3, cpp, hpp...etc y'en a plein...)
                                      HKEY_CURRENT_USER/Software contient les programmes de l'utilisateur en question...tu peut voir si tel ou tel programme est intallé....

                                      sinon il doit bien exister une clef avec les programmes par defaut, mais je ne la connais pas(il en existe une j,en metterais ma main au feu...)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        23 avril 2008 à 17:43:27

                                        Citation : El roux

                                        Pour ouvrir le programme par défaut chez chacun, si tu programme sous windows(linux j'en ai aucune idée, je suis pas assez experimenté)

                                        1)renseigne toi sur les methode de l,api windows (RegOpenKey et RegQueryValue)
                                        cela servira pour le 2 ^^

                                        2)Va voir dans le registre les applications par défaut.Il faudra surment que tu te renseigne un peu, moi je ne peut t'aider que sur des sujet tres élémentaires...

                                        par exemple, HEKY_classes_root contient les applications par defaut pour tous tes fichiers qui en ont un(mp3, cpp, hpp...etc y'en a plein...)
                                        HKEY_CURRENT_USER/Software contient les programmes de l'utilisateur en question...tu peut voir si tel ou tel programme est intallé....

                                        sinon il doit bien exister une clef avec les programmes par defaut, mais je ne la connais pas(il en existe une j,en metterais ma main au feu...)



                                        Je suis intéraissé aussi par ce sujet
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        :)
                                          23 avril 2008 à 17:52:06

                                          pour windows comme l'a dit The frog:
                                          system("start fichier.pdf");
                                          
                                          fonctionne très bien. Ca prend une ligne, ca bidouille pas le registre et c'est facile.

                                          pour linux tu peux peux peut être utiliser quelque chose comme ca : http://blog.creaone.fr/post/2007/10/22 [...] iciel-utilise

                                          Tu crée un ouvrir.sh et tu l'appelle avec system("ouvrir.sh truc.pdf")

                                          Et pour avoir du code portable sous ces deux os tu utilise
                                          #ifdef WINDOWS
                                            //code windows
                                          #endif
                                          
                                          #ifdef UNIX
                                            //code linux
                                          #endif
                                          
                                          #ifndef WINDOWS
                                          #ifndef UNIX
                                            ERREUR DE COMPILATION
                                          #endif
                                          #endif
                                          


                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            23 avril 2008 à 18:41:18

                                            Sous windows, ça se fait en une seule api (SE, la plus connue)
                                            On ne lit pas la registry, puisque le Shell le fait automatiquement par les ProgId
                                            Et surtout pas system(), évidemment, surtout en GUI subsystem..
                                            Tout est expliqué en long large et travers dans MSDN...
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Anonyme
                                              23 avril 2008 à 22:52:04

                                              Salut à tous :)
                                              Je viens de trouver dans la doc de Qt une fonction qui permet d'ouvrir des fichiers, des URLs, bref, tout ce que je cherchais :) : c'est ici
                                              Voilà, bonne continuation.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                23 avril 2008 à 23:00:50

                                                Pour ceux qui se demandent : si vous utilisez Qt, abandonnez totalement l'idée de faire des appels à "system()", cette fonction est bloquante, et donc bloquera votre programme tant que le programme appelé n'aura pas terminé son exécution. Il suffit alors d'un simple bug du programme appelé pour que votre interface entière soit figée...et de plus, si c'est pour afficher un pdf d'aide, on aime bien ne pas avoir à fermer l'aide pour continuer à utiliser le programme...

                                                Qt implémente des QProcess, c'est la meilleure chose qui nous soit arrivée, cela fait la même chose qu'un system(), mais dans dans un processus différent, donc votre programme peut continuer à tourner, et de plus vous pouvez communiquer avec lui, donc par exemple, si vous lancez un programme console qui écrit des trucs dans la sortie standard (via des "cout <<" par exemple), et bien vous pouvez TRÈS simplement lire la sortie standard pour afficher tout ce qu'elle contient dans un QTextEdit par exemple. Inutile de préciser que vous pouvez de meme envoyer des données sur l'entrée standard (équivalent de "cin >>") de votre programme, bref, la communication est posssible.

                                                C'est aussi pourquoi il est vivement conseillé de n'utiliser Qt que pour faire une interface, le programme "utile" étant un truc en console, ce qui est bien plus simple à débugguer : si le programme console marche, alors 99% du travail est fait :)
                                                • Partager sur Facebook
                                                • Partager sur Twitter

                                                Comment faire pour que d'autres logiciels s'ouvrent depuis mon programme ?

                                                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                • Editeur
                                                • Markdown