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
