sortie standard windows

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

sortie standard windows

Message 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
Avatar de l’utilisateur
falsam
Messages : 7321
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: sortie standard windows

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Re: sortie standard windows

Message 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 ? :)
Avatar de l’utilisateur
falsam
Messages : 7321
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: sortie standard windows

Message 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
Dernière modification par falsam le ven. 09/sept./2011 12:54, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7321
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: sortie standard windows

Message par falsam »

Si tu tiens absolument à ton mode console, place FreeConsole_() juste apres OpenConsole(). La fenêtre console se ferme plus rapidement.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7321
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: sortie standard windows

Message 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()
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
aliong
Messages : 44
Inscription : lun. 12/avr./2010 22:17

Re: sortie standard windows

Message par aliong »

ok ben supe rmerci a toi falsam ! je vais tester tout ça ;)
Répondre