Page 1 sur 1

sortie standard windows

Publié : ven. 09/sept./2011 9:09
par aliong
Bonjour,
est il possible soit de masquer une fenêtre console ? en réduisant ça taille ou la masquer complétement... donc sur un OpenConsole.
ou bien alors écrire dans la sortie standard du programme qui s'ouvre avec OpenWindow(#PB_Any,0,0,0,0,"process", #PB_Window_Invisible).
donc sortie standard se serait l’équivalent d'un print en OpenConsole sur un OpenWindow

par avance merci

AlionG

Re: sortie standard windows

Publié : ven. 09/sept./2011 10:25
par falsam
RunProgram() (Voir aide)

Un exemple pour illustrer cette fonctionnalité.

Code : Tout sélectionner

EnableExplicit 
Enumeration
  #MainForm
  #stdout
EndEnumeration

If OpenWindow(#MainForm, 0, 0, 500, 500, "STdout", #PB_Window_SystemMenu)
  EditorGadget(#stdout, 0, 350, 500, 140)
EndIf

Global Exec.i, CMD.s, Param.s, Stdout.s 

CMD ="ping"
Param = "www.purebasic.com"
Stdout=""

Exec = RunProgram(CMD, Param, "",#PB_Program_Open|#PB_Program_Hide|#PB_Program_Read )

If Exec
  While ProgramRunning(Exec)
    If AvailableProgramOutput(Exec)
      If AvailableProgramOutput(Exec)
        Stdout + ReadProgramString(Exec) + #CRLF$
      EndIf   
    EndIf  
  Wend
    
  Stdout + Str(ProgramExitCode(Exec))
  SetGadgetText(#Stdout, Stdout)
  CloseProgram(Exec)  
EndIf
Debug Stdout
  
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      End
      
  EndSelect
ForEver

Re: sortie standard windows

Publié : ven. 09/sept./2011 10:52
par aliong
ok merci pour ta reponse mais je vais essayer de detailler un peu plus :
en faite l'idée et de creer en pb un prog.exe qui fera des opération non possible avec un autre langage.
avec cet autre language j'envois mes parametres et les recupere en pb sur l'entree du prog avec :

ProgramParameter()

jusque la tout va bien, je peux executer des fonctions ect...
mais lorsque je souhaite recevoir un resultat du programme fait avec pb, je dois le retourner sur le chan out principale de l'app pb, pour etre capable de le lire avec mon autre langage.
donc avec un OpenConsole() je fais un Print et c'est tout bon je reçoit bien mon résultat.
maintenant mon problème c'est qu'a chaque opération j'ai ma fenêtre de cmd qui pop un fragment de seconde et ça je voudrais l'éviter !

si je me base sur RunProgram je dosi faire alors un RunProgram de mon prog qui est en OpenConsole ?
c'est un peu lourd non ?
une autre idée peut être ? :)

Re: sortie standard windows

Publié : ven. 09/sept./2011 12:50
par falsam
Solution fenetre invisible.

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 0, 0, "0", #PB_Window_Invisible)
EndIf

Global Exec.i, CMD.s, Param.s, Stdout.s 

CMD ="ping"
Param = "www.purebasic.com"
Stdout=""

Exec = RunProgram(CMD, Param, "",#PB_Program_Open|#PB_Program_Hide|#PB_Program_Read )


If Exec
  While ProgramRunning(Exec)
    If AvailableProgramOutput(Exec)
      If AvailableProgramOutput(Exec)
        Stdout + ReadProgramString(Exec) + #CRLF$
      EndIf   
    EndIf  
  Wend
    
  CloseProgram(Exec)  
EndIf

Debug Stdout

End

Re: sortie standard windows

Publié : ven. 09/sept./2011 12:52
par falsam
Si tu tiens absolument à ton mode console, place FreeConsole_() juste apres OpenConsole(). La fenêtre console se ferme plus rapidement.

Re: sortie standard windows

Publié : ven. 09/sept./2011 13:10
par falsam
Une petite dernière pour la route mais je ne suis pas certain que ce soit plus rapide que la précédente.

Le principe est de Cacher la fenêtre de la console d'aprés son handle.

Code : Tout sélectionner

Import ""
  GetConsoleWindow()
EndImport

CMD$ ="ping"
Param$ = "www.purebasic.com"

OpenConsole()

;Caché la console d'aprés le handle de la console
ShowWindow_(GetConsoleWindow(), #SW_HIDE)

Exec = RunProgram(CMD$, Param$, "",#PB_Program_Open|#PB_Program_Hide|#PB_Program_Read|#SW_HIDE)

If Exec
  While ProgramRunning(Exec)
    If AvailableProgramOutput(Exec)
      If AvailableProgramOutput(Exec)
        Buffer$=ReadProgramString(Exec)
        PrintN(Buffer$)
        
        Debug Buffer$ ;test
      EndIf   
    EndIf  
  Wend
 
  CloseProgram(Exec)  
  
EndIf

CloseConsole()

Re: sortie standard windows

Publié : sam. 10/sept./2011 7:51
par aliong
ok ben supe rmerci a toi falsam ! je vais tester tout ça ;)