como se puede insertar cmd en dialogo

como se puede insertar cmd en dialogo

Postby morin0510 » Fri May 05, 2023 6:59 pm

buenas a todos y gracias de antemano a ver si se puede colocar simbolo del sistema en un dialogo para poder ver errores al compilar
morin0510
 
Posts: 14
Joined: Mon Jul 06, 2015 7:11 pm

Re: como se puede insertar cmd en dialogo

Postby JESUS MARIN » Sat May 06, 2023 2:58 am

Image
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: como se puede insertar cmd en dialogo

Postby JESUS MARIN » Sat May 06, 2023 3:02 am

Hola
Prueba a ver si te ayuda

Code: Select all  Expand view  RUN
// Pruebas de exe dentro de un exe  CMD
// Jesús Marín Vives 06/05/2023




#include "FiveWin.ch"

Static oWnd
Static oWndChild, oWnd2
Static nRow        := 0
Static nCol        := 0
Static nHChild     := 650
Static nWChild     := 1000
Static hWin

function Main()

   DEFINE WINDOW oWnd MDI FROM 50,50 TO 700, 1200 PIXEL ;
      TITLE "Abir CMD en Dialogo de un MdiChild" MENU MyMenu()

   ACTIVATE WINDOW oWnd //MAXIMIZED

return nil

//----------------------------------------------------------------------------//

Function MyMenu()

   local oMnu
   MENU oMnu
      MENUITEM "Crea MdiChild" ACTION ( CreaChild() )
      MENUITEM "Exit"   ACTION oWnd:End()
   ENDMENU

Return oMnu

//----------------------------------------------------------------------------//

Function CreaChild()


   DEFINE WINDOW oWndChild MDICHILD OF oWnd ;
      FROM nRow + 1 , nCol TO nHChild, nWChild PIXEL ;
      COLOR CLR_WHITE, CLR_BLUE TITLE "CMD.EXE sobre Dialogo"

   ACTIVATE WINDOW oWndChild MAXIMIZED;
      ON INIT ( Externo() )

return oWndChild

//----------------------------------------------------------------------------//

#define GW_HWNDNEXT                       2
#define GW_CHILD                          5
#define GWL_STYLE                       -16
#define GWL_EXSTYLE                     -20

#define SWP_NOZORDER                 0x0004
#define SWP_NOREDRAW                 0x0008
#define SWP_FRAMECHANGED             0x0020
#define SWP_NOOWNERZORDER            0x0200
#define SWP_ASYNCWINDOWPOS           0x4000

#define HWND_TOP                          0
#define HWND_BOTTOM                       1

//----------------------------------------------------------------------------//

STATIC FUNCTION Externo()



   DEFINE DIALOG oWnd2 OF oWndChild /*STYLE WS_CHILD*/ FROM 10,10 TO 572, 792 PIXEL TITLE "Probando CMD.EXE dentro del diálogo"
   ACTIVATE DIALOG oWnd2 CENTER NOWAIT ON INIT Externo2()



return nil

STATIC FUNCTION Externo2()

local nStyle



   hWin=NIL

   if Empty( hWin )

      SysRefresh()

      IF hWin = NIL

         WinExec( "CMD.EXE")
         SysRefresh()
         MsgWait(" Espera un momento","Se está activando CMD.EXE",2)
         SysRefresh()
         hWin := FindWnd( "CMD.EXE" )

      ENDIF

   endif

   if !Empty( hWin )
      nStyle          := GetWindowLong( hWin, GWL_STYLE )
      nStyle          -= WS_CAPTION
      nStyle          -= WS_SYSMENU
      nStyle          -= WS_THICKFRAME
      SetParent( hWin, oWnd2:hWnd )
      SetWindowLong( hWin, GWL_STYLE, nStyle )
      SetPosExt( hWin )
      SetFocus( hWin )
   endif

RETURN NIL

//----------------------------------------------------------------------------//

Function FindWnd( cTitle )
   local hWnd1 := GetWindow( GetDesktopWindow(), GW_CHILD )
   local lSw   := .F.

   while hWnd1 != 0
      if Upper( cTitle ) $ Upper( GetWindowText( hWnd1 ) )
         lSw  := .T.
         Exit
      endif
      hWnd1 = GetWindow( hWnd1, GW_HWNDNEXT )
   end
return if( lSw, hWnd1, nil )

//----------------------------------------------------------------------------//

Function SetPosExt( hWnd )

     local aRect        := GetClientRect( hWnd )
     local nAncho       := oWnd2:nWidth // -10                  
     local nInc         := 0
     local nInc1        := 0
     local aPos         := Array( 4 )
     DEFAULT aPos[ 1 ]  := 1   //ntop
     DEFAULT aPos[ 2 ]  := 1  //nleft
     DEFAULT aPos[ 3 ]  := nAncho  -10
     DEFAULT aPos[ 4 ]  := oWnd2:nHeight - nInc - nInc1 - aPos[ 1 ] -32
     SetWindowPos( hWnd, HWND_TOP, ; //BOTTOM, ;
                   aPos[ 1 ] + nInc, aPos[ 2 ] + 1, aPos[ 3 ], aPos[ 4 ], ;
                   nOr( SWP_ASYNCWINDOWPOS, SWP_FRAMECHANGED, SWP_NOOWNERZORDER, SWP_NOZORDER, SWP_NOREDRAW ) ) //, SWP_NOZORDER ) )

Return nil

//----------------------------------------------------------------------------//

 
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: como se puede insertar cmd en dialogo

Postby morin0510 » Sat May 06, 2023 11:28 am

muchas gracias por contestar tan rapido te digo lo que intento hacer
en una ventana de windows tengo un editor de texto donde esta el prg
en el editor modificas el prg y tengo 2 botones uno que compila y otro para el exe
al compilar Winexec(d:\prueba\p1.bat") funciona pero no ves los errores y quisiera poner
debajo del editor en la misma pantalla el texto que sale en cmd para no ir de un lado a otro
no se si se puede hacer y si me explique bien lo que quiero hacer.
morin0510
 
Posts: 14
Joined: Mon Jul 06, 2015 7:11 pm

Re: como se puede insertar cmd en dialogo

Postby Antonio Linares » Sat May 06, 2023 12:03 pm

Si redireccionas la salida a un fichero:

Winexec( "d:\prueba\p1.bat > info.txt")

Luego solo tienes que leer ese fichero info.txt
MsgInfo( memoRead( "info.txt" ) )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: como se puede insertar cmd en dialogo

Postby Willi Quintana » Sat May 06, 2023 3:01 pm

morin0510 wrote:muchas gracias por contestar tan rapido te digo lo que intento hacer
en una ventana de windows tengo un editor de texto donde esta el prg
en el editor modificas el prg y tengo 2 botones uno que compila y otro para el exe
al compilar Winexec(d:\prueba\p1.bat") funciona pero no ves los errores y quisiera poner
debajo del editor en la misma pantalla el texto que sale en cmd para no ir de un lado a otro
no se si se puede hacer y si me explique bien lo que quiero hacer.

MI estimado, uso el MED, algo antiguo pero hace lo que pides, que editor usas ??
Image
Last edited by Willi Quintana on Sat May 06, 2023 3:07 pm, edited 3 times in total.
User avatar
Willi Quintana
 
Posts: 1019
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: como se puede insertar cmd en dialogo

Postby morin0510 » Sat May 06, 2023 3:04 pm

muchas gracias me puede servir lo que queria
morin0510
 
Posts: 14
Joined: Mon Jul 06, 2015 7:11 pm

Re: como se puede insertar cmd en dialogo

Postby morin0510 » Sat May 06, 2023 3:11 pm

en los samples sciedit.prg modificado como buenamente e podido
morin0510
 
Posts: 14
Joined: Mon Jul 06, 2015 7:11 pm

Re: como se puede insertar cmd en dialogo

Postby JESUS MARIN » Sun May 07, 2023 4:05 pm

morin0510 wrote:muchas gracias por contestar tan rapido te digo lo que intento hacer
en una ventana de windows tengo un editor de texto donde esta el prg
en el editor modificas el prg y tengo 2 botones uno que compila y otro para el exe
al compilar Winexec(d:\prueba\p1.bat") funciona pero no ves los errores y quisiera poner
debajo del editor en la misma pantalla el texto que sale en cmd para no ir de un lado a otro
no se si se puede hacer y si me explique bien lo que quiero hacer.


Buenas
¿ algo como esto ?
(está reducido para que se vea bién el video)

Image
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: como se puede insertar cmd en dialogo

Postby morin0510 » Sun May 07, 2023 5:29 pm

buenas si es bastante parecido a lo que tenia pensado, pero la cmd solo la quiero para ver si hay algun error
y ver la linea del error ,con lo del archivo txt que me dijo antonio sale pero no dice la linea del error tengo que mirarlo
en la cmd que sale en el exe, mi intencion era esa cmd que sale con el exe ponerla en la ventana de windows al lado del editor
y cuando de al boton de compilar salga en esa cmd y pueda ver sin moverte de la pantalla principal.
perdona que me explique tan mal gracias
morin0510
 
Posts: 14
Joined: Mon Jul 06, 2015 7:11 pm

Re: como se puede insertar cmd en dialogo

Postby JESUS MARIN » Mon May 08, 2023 5:00 am

Buenos dias
Si observas bien el video, verás que SI te indica el error.

hello.prg[7] Error E0020 .......

Puedes tener solo la ventana del CMD o tener CMD y el resultado de info.txt

Como D. Antonio Linares te indicó, si utilizas " > info.txt ", todo lo que te va a mostrar el CMD se graba en un archivo.
Visualiar o no ese archivo ya es una cuestión de gustos.
Jesús Marín
JESUS MARIN
 
Posts: 176
Joined: Wed Jan 02, 2019 8:36 am

Re: como se puede insertar cmd en dialogo

Postby morin0510 » Mon May 08, 2023 8:15 am

buenas pongo el archivo txt y queda bastante bien muchas gracias a todos
morin0510
 
Posts: 14
Joined: Mon Jul 06, 2015 7:11 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 32 guests