Précédent   Forum des professionnels en informatique > Autres langages > Autres langages > Basic > PureBasic
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2011, 08h46   #1
Invité de passage
 
Inscription : mars 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 10
Points : 3
Points : 3
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 :
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
chourmovs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 09h30   #2
Responsable Purebasic
 
Avatar de comtois
 
Inscription : avril 2003
Messages : 810
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 810
Points : 1 856
Points : 1 856
Citation:
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 :
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.
comtois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 09h58   #3
Invité de passage
 
Inscription : mars 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 10
Points : 3
Points : 3
Merci Comtois
j'avais essayé mais tu m' incites a retenter
chourmovs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 10h19   #4
Invité de passage
 
Inscription : mars 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 10
Points : 3
Points : 3
Bonjour
j'ai adapaté ce bout de code au mien

Code :
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
Type de fichier : png Capture.PNG (48,1 Ko, 16 affichages)
chourmovs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 10h40   #5
Responsable Purebasic
 
Avatar de comtois
 
Inscription : avril 2003
Messages : 810
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 810
Points : 1 856
Points : 1 856
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.
comtois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 11h42   #6
Invité de passage
 
Inscription : mars 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 10
Points : 3
Points : 3
je crois que CA va le faire

http://www.purebasic.fr/english/viewtopic.php?p=322220
chourmovs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 17h35   #7
Responsable Purebasic
 
Avatar de comtois
 
Inscription : avril 2003
Messages : 810
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 810
Points : 1 856
Points : 1 856
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.
comtois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 18h36   #8
Invité de passage
 
Inscription : mars 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 10
Points : 3
Points : 3
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 :
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
chourmovs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h14.


 
 
 
 
Partenaires

Hébergement Web