PureBasic
https://www.purebasic.fr/french/

Integration console
https://www.purebasic.fr/french/viewtopic.php?f=1&t=18209
Page 1 sur 1

Auteur:  Ekim [ Dim 15/Nov/2020 22:47 ]
Sujet du message:  Integration console

Bonsoir à tous)

est il possible d'intégrer une fenêtre console dans une fenêtre window? si oui, j'en serais ravis de voir ça)

je pose la question car fut une époque, j'avais un ancien logiciel où sur le coin droit ou gauche de la fenêtre,
on pouvait observer la présence d'une console, je ne sais plus trop de quoi d'ailleur :lol: et j'ignore quelle
méthode avait été employé, mais cela m'intéresserais de faire la même chose pour un projet avenir

je m'en remets à vous les spécialistes :D

Auteur:  SPH [ Lun 16/Nov/2020 4:24 ]
Sujet du message:  Re: Integration console

Ekim a écrit:
est il possible d'intégrer une fenêtre console dans une fenêtre window?

Jamais je n'ai vu ca; donc...

Les consoles s'ouvrent sous windows et pas sur une fenetre windows.
Mais attendons que les ténors de PB s'expriment... 8)

Auteur:  Ekim [ Lun 16/Nov/2020 13:18 ]
Sujet du message:  Re: Integration console

Salut @SPH, il est vrai que sa aurait été plus simple de retrouver le nom du fameux soft :lol:

mais je cherche comme un malade dans mes anciens disque ext, bref c'est pas gagné :?

Auteur:  Mesa [ Lun 16/Nov/2020 15:27 ]
Sujet du message:  Re: Integration console

Il est plus simple de recuperer la sortie console et de l'afficher dans une fenêtre comme ça:
(ça vient du forum)
Code:
;Rediriger l'invite de commande dans un gadget

Enumeration Font
  #FontGlobal
EndEnumeration

Enumeration Window
  #MainForm
EndEnumeration

Enumeration Gadget
  #Result
EndEnumeration

Enumeration KeyBoard
  #Up
  #Down
EndEnumeration

Declare Start()
Declare RunCmd(Cmd.s)
Declare OnChange()
Declare OnKey()
Declare OnResize()

Start()

Procedure Start()
  LoadFont(#FontGlobal, "", 11)
  SetGadgetFont(#PB_Default, FontID(#FontGlobal))
  If OpenWindow(#MainForm, 0, 0, 800, 600, "Terminal", #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
    EditorGadget(#Result, 5, 10, 790, 580)
    SetGadgetColor(#Result,  #PB_Gadget_BackColor, RGB(174, 191, 191))
    SetActiveGadget(#Result)
   
    AddKeyboardShortcut(#MainForm, #PB_Shortcut_Up, #Up)
    AddKeyboardShortcut(#MainForm, #PB_Shortcut_Down, #Down)
   
    BindEvent(#PB_Event_Menu, @OnKey(), #MainForm, #Up)
    BindEvent(#PB_Event_Menu, @OnKey(), #MainForm, #Down)
   
    BindEvent(#PB_Event_SizeWindow, @OnResize())
    BindGadgetEvent(#Result, @OnChange(), #PB_EventType_Change)
    Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
  EndIf
EndProcedure

Procedure RunCmd(Cmd.s)
  Protected prg.i, Stdout.s, TagResult.b
 
  Select LCase(cmd)
     
    Case "cls"
      ClearGadgetItems(#Result)
     
    Case "exit"
      End
     
    Default
      If LSet(Cmd, 3) = "cd "
        SetCurrentDirectory(Trim(Mid(cmd, 3)))
        AddGadgetItem(#Result, -1,  "le dossier courrant est : " + GetCurrentDirectory())
       
      ElseIf LCase(LSet(cmd, 5)) = "title"
        SetWindowTitle(#MainForm, Trim(Mid(cmd, 6)))
       
      Else 
       
        prg = RunProgram("cmd.exe", "/c " + Cmd, "", #PB_Program_Open|#PB_Program_Read|#PB_Program_Hide|#PB_Program_UTF8);
        If prg
          While ProgramRunning(prg)
            If AvailableProgramOutput(prg)
              Stdout = ReadProgramString(prg,  #PB_UTF8)
              AddGadgetItem(#Result, -1,  Stdout)
              If Stdout <> ""
                TagResult = #True
              EndIf
            EndIf
          Wend
         
          CloseProgram(prg)
         
          If FindString(Cmd, ">") Or FindString(LCase(Cmd), "del")
            TagResult = #True
          EndIf
         
          If Not TagResult
            AddGadgetItem(#Result, -1,  "Erreur de commande : " + Cmd)
          EndIf
        EndIf
      EndIf
      AddGadgetItem(#Result, -1,  "")
  EndSelect
EndProcedure

Procedure OnChange()
  Protected Buffer.s = GetGadgetItemText(#Result, CountGadgetItems(#Result)-1)
  Static Cmd.s
 
  If Buffer = "" And cmd <> ""
    RunCmd(cmd)
  EndIf
 
  Cmd = Buffer
  SetGadgetState(#Result, CountGadgetItems(#Result))
EndProcedure

Procedure OnKey() 
  Protected Index = CountGadgetItems(#Result)
  SetGadgetState(#Result, Index)
EndProcedure

Procedure OnResize()
  Protected Width = WindowWidth(#MainForm)
  Protected Height= WindowHeight(#MainForm)
 
  ResizeGadget(#Result, #PB_Ignore, #PB_Ignore, Width - 10, Height - 20)
EndProcedure


T'as plus qu'à taper help ou dir sous windows...


C'est dommage que "AltConsole" soit devenu payant parce qu'il est génial:
https://www.purebasic.fr/english/viewto ... ALtconsole

M.

Auteur:  Ekim [ Mar 17/Nov/2020 3:35 ]
Sujet du message:  Re: Integration console

Salut @Mesa

Ton idée est génial, mais en fait, je m'était peut être mal exprimé
ce que j'entendais par "console" c'était la console propre à Pb et
non pas cmd, l'invite de commande de microsoft;

j'aurais peut être dû dire plutôt console Pb dans un Window Pb

mais ton idée est excellente merci pour le partage :P

Auteur:  venom [ Mar 17/Nov/2020 6:55 ]
Sujet du message:  Re: Integration console

Ekim a écrit:
j'aurais peut être dû dire plutôt console Pb dans un Window Pb


Console PB ??






@++

Auteur:  Marc56 [ Mar 17/Nov/2020 9:49 ]
Sujet du message:  Re: Integration console

Citation:
ce que j'entendais par "console" c'était la console propre à Pb et
non pas cmd, l'invite de commande de microsoft;
j'aurais peut être dû dire plutôt console Pb dans un Window Pb
Ne serais-ce pas plutôt la fenêtre de Debug ?
Dans ce cas, ce n'est pas une console, car elle ne fait que les sorties.

Les sorties "console" qu'on trouve par exemple dans les programmes de pilotages de machines CNC (Ex: imprimantes 3D, lasers de découpe etc) sont souvent des fenêtres faisant office de terminal série et permettant de "dialoguer" directement avec la machine pour lui passer les commandes directement (ex: passer des commandes GRBL))

Auteur:  Ekim [ Lun 23/Nov/2020 22:48 ]
Sujet du message:  Re: Integration console

Ok autant pour moi concernant les appellations techniques :lol:
Merci pour votre aide, comme vous le voyez, je viens de très loin))


encore merci

Page 1 sur 1 Heures au format UTC + 1 heure
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/