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

PureBasic Discussion :

Programmes, fenêtres et consoles


Sujet :

PureBasic

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut Programmes, fenêtres et consoles
    Bonjour
    mon programme a pour vocation de créer des script *.bat qui vont eux même lancer des programmes externes
    le lancment se fait comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    eac3to.s = "eac3to.bat"
    RunProgram(eac3to.s,"","",#PB_Program_Wait)
    Ces programmes externes sont en ligne de commande, il n'y a pas de secret il s'agit de mkvextract, mkvmerge et eac3to
    Du coup ces programmes se lancent dans des fenêtres consoles externe et j'aimerai qu'il s'execute dans une fenêtre interne a mon GUI, en utilisant la bibliothèque console par exemple et éventuellement en sortant du système de .bat (CAD en envoyant directement la commande a la console ou en interceptant la "sortie" de l'exe vers une console), mais aucune de mes tentatives ne fonctionne
    Pouvez vous m'orienter
    Merci

  2. #2
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 261
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 261
    Points : 9 924
    Points
    9 924
    Billets dans le blog
    8
    Par défaut
    et éventuellement en sortant du système de .bat (CAD en envoyant directement la commande a la console ou en interceptant la "sortie" de l'exe vers une console)
    Tu as jeté un oeil à l'exemple qui se trouve dans l'aide de RunProgram(),
    Il me semble qu'il fait exactement ce que tu demandes ?

    Ici une légère modification pour écrire le résultat dans une console.

    Code : 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
    18
    19
    20
    21
    22
      ; Execute le compilateur PureBasic avec l'option /? et affiche la sortie (version Windows)
      ; Pour Linux/MacOS changez le paramètre "/?" en "-h".
      ;   
      OpenConsole()
      PrintN("Lancement du compilateur")
      Compilateur = RunProgram(#PB_Compiler_Home+"/Compilers/pbcompiler", "/?", "", #PB_Program_Open|#PB_Program_Read)
      Sortie$ = ""
      If Compilateur 
     
        While ProgramRunning(Compilateur)
          If AvailableProgramOutput(Compilateur)
            PrintN(ReadProgramString(Compilateur))
          EndIf
        Wend
        Sortie$ + Chr(13) + Chr(13)
        Sortie$ + "Code de retour : " + Str(ProgramExitCode(Compilateur))
     
        CloseProgram(Compilateur) ; Ferme la connexion vers le programme
      EndIf
     
      Input()
      CloseConsole()
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Merci Comtois
    j'avais essayé mais tu m' incites a retenter

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour
    j'ai adapaté ce bout de code au mien

    Code : 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
    18
    19
    20
    21
    22
    23
    24
     SetCurrentDirectory(progdir.s)
                  extractinfo.s = Chr(34)+progdir.s+"MediaInfo.exe"+Chr(34)+param1.s
     
     
                  OpenConsole()
                     PrintN("mediainfo")
                    Compilateur = RunProgram(extractinfo.s, "/?", "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Error)
                    Sortie$ = ""
                    If Compilateur 
     
                      While ProgramRunning(Compilateur)
                        If AvailableProgramOutput(Compilateur)
                          PrintN(ReadProgramString(Compilateur))
                        EndIf
                      Wend
                      Sortie$ + Chr(13) + Chr(13)
                      Sortie$ + "Code de retour : " + Str(ProgramExitCode(Compilateur))
     
                      CloseProgram(Compilateur) ; Ferme la connexion vers le programme
                    EndIf
     
                    Input()
     
                  CloseConsole()
    Il s'agit de récupérer la sortie de mediainfo.exe qui st un programme qui se lance depuis une console et j'obtiens ceci


    sans doute un problême de donnée binaire ou de formatage

    peut être faut il creuser avec la fonction suivante
    http://www.purebasic.com/french/docu...ogramdata.html

    mais je n'arrive pas a la faire fonctionner
    Images attachées Images attachées  

  5. #5
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 261
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 261
    Points : 9 924
    Points
    9 924
    Billets dans le blog
    8
    Par défaut
    Je n'ai pas le temps de regarder, je dois partir, je rentre dans une dizaine de jours.
    J'ai regardé vite fait ton code.

    Pour t'affranchir des risques d'erreurs dans ta chaine
    extractinfo.s = Chr(34)+progdir.s+"MediaInfo.exe"+Chr(34)+param1.s
    Essaye d'écrire directement le chemin dans la commande RunProgram (pour tes essais, tu passeras par une variable quand tout sera ok)
    RunProgram("c:\...\MediaInfo.exe",

    Ensuite c'est quoi ce param1.s ?
    il faut séparer les paramètres et les mettre après le nom du programme
    RunProgram(NomDuProgramme$, les paramètres ici, "",

    Bon je m'en vais , A+
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 6
    Points
    6

  7. #7
    Responsable Purebasic

    Avatar de comtois
    Inscrit en
    Avril 2003
    Messages
    1 261
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 1 261
    Points : 9 924
    Points
    9 924
    Billets dans le blog
    8
    Par défaut
    Je suis rentré plus tôt que prévu, plus les années passent, plus j'apprécie mon chez moi


    Alors finalement, tu as réussi à t'en sortir ?
    Vous souhaitez participer à la rubrique PureBasic (tutoriels, FAQ, sources) ? Contactez-moi par MP.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    Bonjour et merci pour le suivi, c'est moi qui ne suis pas chez moi maintenant...

    Finalement je m'en suis sorti avec la méthode classique :

    Pour cacher la console je suis passer par l'option " #PROG_HIDDEN"
    pour récupérer la sortie, j'ai réusssi a utiliser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    if prog
      While ProgramRunning(prg)
          If AvailableProgramOutput(prg
            Output$ + ReadProgramString(prg+ Chr(13)
          EndIf
        Wend
    .....
    Je ne sais pas pourquoi toutes mes tentatives précédentes avait échouées

    Du coup je progresse bien, merci pour ton aide

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

Discussions similaires

  1. Programme C++ de console pour Lua
    Par Xitog dans le forum C++
    Réponses: 1
    Dernier message: 30/05/2007, 19h46
  2. [Débutant] Pause dans un programme en mode console ?
    Par pugnator dans le forum Langage
    Réponses: 2
    Dernier message: 15/12/2006, 12h08
  3. Réponses: 4
    Dernier message: 10/04/2006, 08h28
  4. Processus en boucle sans fenêtre ni console
    Par alainpeniche dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 26/07/2005, 17h43
  5. Problème avec un programme éxécuter en console
    Par bzhrobby dans le forum Windows
    Réponses: 2
    Dernier message: 25/04/2005, 10h42

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